]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[MINOR] http: logs must report persistent connections to down servers
authorWilly Tarreau <w@1wt.eu>
Sun, 24 Jan 2010 12:10:43 +0000 (13:10 +0100)
committerWilly Tarreau <w@1wt.eu>
Sun, 24 Jan 2010 12:10:43 +0000 (13:10 +0100)
When using "option persist" or "force-persist", we want to know from the
logs if the cookie referenced a valid server or a down server. Till here
the flag reported a valid server even if the server was down, which is
misleading. Now we correctly report that the requested server was down.
We can typically see "--DI" when using "option persist" with redispatch,
ad "SCDN" when using force-persist on a down server.

src/proto_http.c

index 83e051848da1d21f70fa01eb31e57074f030809c..7cb4faa491a30805ab79b9889135a2592be2de28 100644 (file)
@@ -5220,7 +5220,7 @@ void manage_client_side_appsession(struct session *t, const char *buf, int len)
                                            (t->flags & SN_FORCE_PRST)) {
                                                /* we found the server and it's usable */
                                                txn->flags &= ~TX_CK_MASK;
-                                               txn->flags |= TX_CK_VALID;
+                                               txn->flags |= (srv->state & SRV_RUNNING) ? TX_CK_VALID : TX_CK_DOWN;
                                                t->flags |= SN_DIRECT | SN_ASSIGNED;
                                                t->srv = srv;
                                                break;
@@ -5418,7 +5418,7 @@ void manage_client_side_cookies(struct session *t, struct buffer *req)
                                                            (t->flags & SN_FORCE_PRST)) {
                                                                /* we found the server and it's usable */
                                                                txn->flags &= ~TX_CK_MASK;
-                                                               txn->flags |= TX_CK_VALID;
+                                                               txn->flags |= (srv->state & SRV_RUNNING) ? TX_CK_VALID : TX_CK_DOWN;
                                                                t->flags |= SN_DIRECT | SN_ASSIGNED;
                                                                t->srv = srv;
                                                                break;