]> 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>
Thu, 28 Jan 2010 22:16:57 +0000 (23:16 +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.
(cherry picked from commit 2a6d88dafe5e5628abb962caf395143d0c0b6024)

src/proto_http.c

index bae0412384aafa57c62c95996ff4750c004b1acf..fd6fd3f6d49deb9f460c695ae1f0052888e15a45 100644 (file)
@@ -3454,7 +3454,7 @@ void manage_client_side_appsession(struct session *t, const char *buf) {
                                            (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;
@@ -3652,7 +3652,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;