MINOR: proto_http: Remove unused http txn flags

Many flags of the HTTP transction (TX_*) are now unused and useless. So the
flags TX_WAIT_CLEANUP, TX_HDR_CONN_*, TX_CON_CLO_SET and TX_CON_KAL_SET were
removed. Most of TX_CON_WANT_* were also removed. Only TX_CON_WANT_TUN has been
kept.
This commit is contained in:
Christopher Faulet 2019-07-16 14:32:23 +02:00
parent 67bb3bb0c2
commit c41547b66e
3 changed files with 11 additions and 49 deletions

View File

@ -273,21 +273,8 @@ void show_txn_flags(unsigned int f)
SHOW_FLAG(f, TX_NOT_FIRST);
SHOW_FLAG(f, TX_USE_PX_CONN);
SHOW_FLAG(f, TX_HDR_CONN_KAL);
SHOW_FLAG(f, TX_HDR_CONN_CLO);
SHOW_FLAG(f, TX_HDR_CONN_PRS);
SHOW_FLAG(f, TX_WAIT_NEXT_RQ);
SHOW_FLAG(f, TX_HDR_CONN_UPG);
SHOW_FLAG(f, TX_CON_KAL_SET);
SHOW_FLAG(f, TX_CON_CLO_SET);
//printf("%s", f ? "" : " | ");
switch (f & TX_CON_WANT_MSK) {
case TX_CON_WANT_KAL: /*f &= ~TX_CON_WANT_MSK ; printf("TX_CON_WANT_KAL%s", f ? " | " : "");*/ break;
case TX_CON_WANT_TUN: f &= ~TX_CON_WANT_MSK ; printf("TX_CON_WANT_TUN%s", f ? " | " : ""); break;
case TX_CON_WANT_SCL: f &= ~TX_CON_WANT_MSK ; printf("TX_CON_WANT_SCL%s", f ? " | " : ""); break;
case TX_CON_WANT_CLO: f &= ~TX_CON_WANT_MSK ; printf("TX_CON_WANT_CLO%s", f ? " | " : ""); break;
}
SHOW_FLAG(f, TX_CON_WANT_TUN);
SHOW_FLAG(f, TX_CACHE_COOK);
SHOW_FLAG(f, TX_CACHEABLE);

View File

@ -70,37 +70,16 @@
#define TX_CACHE_IGNORE 0x00004000 /* do not retrieve object from cache */
#define TX_CACHE_SHIFT 12 /* bit shift */
/* Unused: 0x8000 */
/* Unused: 0x00008000, 0x00010000, 0x00020000, 0x00080000 */
#define TX_WAIT_CLEANUP 0x0010000 /* this transaction is waiting for a clean up */
#define TX_CON_WANT_TUN 0x00100000 /* Will be a tunnel (CONNECT or 101-Switching-Protocol) */
/* Unused: 0x20000, 0x80000 */
/* unused: 0x00200000, 0x00400000, 0x00800000, 0x01000000, 0x02000000 */
/* indicate how we *want* the connection to behave, regardless of what is in
* the headers. We have 4 possible values right now :
* - WANT_KAL : try to maintain keep-alive (default when nothing configured)
* - WANT_TUN : will be a tunnel (CONNECT).
* - WANT_SCL : enforce close on the server side
* - WANT_CLO : enforce close on both sides
*/
#define TX_CON_WANT_KAL 0x00000000 /* note: it's important that it is 0 (init) */
#define TX_CON_WANT_TUN 0x00100000
#define TX_CON_WANT_SCL 0x00200000
#define TX_CON_WANT_CLO 0x00300000
#define TX_CON_WANT_MSK 0x00300000 /* this is the mask to get the bits */
#define TX_CON_CLO_SET 0x00400000 /* "connection: close" is now set */
#define TX_CON_KAL_SET 0x00800000 /* "connection: keep-alive" is now set */
/* unused: 0x01000000 */
#define TX_HDR_CONN_UPG 0x02000000 /* The "Upgrade" token was found in the "Connection" header */
#define TX_WAIT_NEXT_RQ 0x04000000 /* waiting for the second request to start, use keep-alive timeout */
#define TX_HDR_CONN_PRS 0x08000000 /* "connection" header already parsed (req or res), results below */
#define TX_HDR_CONN_CLO 0x10000000 /* "Connection: close" was present at least once */
#define TX_HDR_CONN_KAL 0x20000000 /* "Connection: keep-alive" was present at least once */
/* unused: 0x08000000, 0x10000000, 0x20000000 */
#define TX_USE_PX_CONN 0x40000000 /* Use "Proxy-Connection" instead of "Connection" */
/* used only for keep-alive purposes, to indicate we're on a second transaction */

View File

@ -400,9 +400,6 @@ int htx_wait_for_request(struct stream *s, struct channel *req, int an_bit)
if (unlikely((s->logs.logwait & LW_REQHDR) && s->req_cap))
htx_capture_headers(htx, s->req_cap, sess->fe->req_cap);
/* by default, close the stream at the end of the transaction. */
txn->flags = (txn->flags & ~TX_CON_WANT_MSK) | TX_CON_WANT_CLO;
/* we may have to wait for the request's body */
if (s->be->options & PR_O_WREQ_BODY)
req->analysers |= AN_REQ_HTTP_BODY;
@ -1242,7 +1239,7 @@ int htx_request_forward_body(struct stream *s, struct channel *req, int an_bit)
done:
/* other states, DONE...TUNNEL */
/* we don't want to forward closes on DONE except in tunnel mode. */
if ((txn->flags & TX_CON_WANT_MSK) != TX_CON_WANT_TUN)
if (!(txn->flags & TX_CON_WANT_TUN))
channel_dont_close(req);
if (HAS_REQ_DATA_FILTERS(s)) {
@ -1275,8 +1272,7 @@ int htx_request_forward_body(struct stream *s, struct channel *req, int an_bit)
* it can be abused to exhaust source ports. */
if (s->be->options & PR_O_ABRT_CLOSE) {
channel_auto_read(req);
if ((req->flags & (CF_SHUTR|CF_READ_NULL)) &&
((txn->flags & TX_CON_WANT_MSK) != TX_CON_WANT_TUN))
if ((req->flags & (CF_SHUTR|CF_READ_NULL)) && !(txn->flags & TX_CON_WANT_TUN))
s->si[1].flags |= SI_FL_NOLINGER;
channel_auto_close(req);
}
@ -1751,7 +1747,7 @@ int htx_wait_for_response(struct stream *s, struct channel *rep, int an_bit)
* header which contains information about that protocol for
* responses with status 101 (eg: see RFC2817 about TLS).
*/
txn->flags = (txn->flags & ~TX_CON_WANT_MSK) | TX_CON_WANT_TUN;
txn->flags |= TX_CON_WANT_TUN;
}
/* check for NTML authentication headers in 401 (WWW-Authenticate) and
@ -5142,7 +5138,7 @@ static void htx_end_request(struct stream *s)
* mode, we'll have to wait for the last bytes to leave in either
* direction, and sometimes for a close to be effective.
*/
if ((txn->flags & TX_CON_WANT_MSK) == TX_CON_WANT_TUN) {
if (txn->flags & TX_CON_WANT_TUN) {
/* Tunnel mode will not have any analyser so it needs to
* poll for reads.
*/
@ -5262,7 +5258,7 @@ static void htx_end_response(struct stream *s)
* mode, we'll have to wait for the last bytes to leave in either
* direction, and sometimes for a close to be effective.
*/
if ((txn->flags & TX_CON_WANT_MSK) == TX_CON_WANT_TUN) {
if (txn->flags & TX_CON_WANT_TUN) {
channel_auto_read(chn);
chn->flags |= CF_NEVER_WAIT;
if (b_data(&chn->buf))