]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[BUG] buffers: remove BF_MAY_CONNECT and fix forwarding issue
authorWilly Tarreau <w@1wt.eu>
Sat, 16 Aug 2008 14:39:26 +0000 (16:39 +0200)
committerWilly Tarreau <w@1wt.eu>
Sat, 16 Aug 2008 14:39:26 +0000 (16:39 +0200)
It wasn't really wise to separate BF_MAY_CONNECT and BF_MAY_FORWARD,
as it caused trouble in TCP mode because the connection was allowed
but not the forwarding. Remove BF_MAY_CONNECT.

include/types/buffers.h
src/client.c
src/proto_http.c

index 71cfab823730bcf877261c580023db280e7b59e4..83190104c5d0f798e6289557418264a3be890c95 100644 (file)
 #define BF_STREAMER          4096
 #define BF_STREAMER_FAST     8192
 
-#define BF_MAY_CONNECT      16384  /* consumer side is allowed to forward the connection */
-#define BF_MAY_FORWARD      32768  /* consumer side is allowed to forward the data */
-#define BF_READ_TIMEOUT     65536  /* timeout while waiting for producer */
-#define BF_WRITE_TIMEOUT   131072  /* timeout while waiting for consumer */
+#define BF_MAY_FORWARD      16384  /* consumer side is allowed to forward the data */
+#define BF_READ_TIMEOUT     32768  /* timeout while waiting for producer */
+#define BF_WRITE_TIMEOUT    65536  /* timeout while waiting for consumer */
 
 /* describes a chunk of string */
 struct chunk {
index 77b1d96c6fae6e67abf8bf7b848c1f90ce59acee..7135d7177e8d6997fb5c09d2b4a3e9a2b67bd01e 100644 (file)
@@ -338,7 +338,7 @@ int event_accept(int fd) {
                        s->req->rlim -= MAXREWRITE;
 
                if (!(s->analysis & AN_REQ_ANY))
-                       s->req->flags |= BF_MAY_CONNECT;  /* don't wait to establish connection */
+                       s->req->flags |= BF_MAY_FORWARD;  /* don't wait to establish connection */
 
                s->req->rto = s->fe->timeout.client;
                s->req->wto = s->be->timeout.server;
index 552f7e5bf68d98f0beeff47fa547b79412894652..1f7f035d6b1bf51afe0e483a5d9b7b149cf95278 100644 (file)
@@ -2992,8 +2992,8 @@ int process_cli(struct session *t)
                req->l, rep->l);
 
        /* if no analysis remains, it's time to forward the connection */
-       if (!(t->analysis & AN_REQ_ANY) && !(req->flags & (BF_MAY_CONNECT|BF_MAY_FORWARD)))
-               req->flags |= BF_MAY_CONNECT | BF_MAY_FORWARD;
+       if (!(t->analysis & AN_REQ_ANY) && !(req->flags & BF_MAY_FORWARD))
+               req->flags |= BF_MAY_FORWARD;
 
        /* FIXME: we still have to check for CL_STSHUTR because client_retnclose
         * still set this state (and will do until unix sockets are converted).
@@ -3228,7 +3228,7 @@ int process_srv(struct session *t)
                        trace_term(t, TT_HTTP_SRV_1);
                        return 1;
                }
-               else if (req->flags & BF_MAY_CONNECT) {
+               else if (req->flags & BF_MAY_FORWARD) {
                        /* the client allows the server to connect */
                        if (txn->flags & TX_CLTARPIT) {
                                /* This connection is being tarpitted. The CLIENT side has