From 01c30124ae36bc13ffa0d0373015ceffdf97b08e Mon Sep 17 00:00:00 2001 From: Thierry FOURNIER Date: Sat, 14 Mar 2015 14:14:47 +0100 Subject: [PATCH] BUG/MEDIUM: http: the action set-{method|path|query|uri} doesn't run. This bug is introduced by the commit "MEDIUM: http/tcp: permit to resume http and tcp custom actions" ( bc4c1ac6ad3dfd5bb ). Before this patch, the return code of the function was ignored. After this path, if the function returns 0, it wats a YIELD. The function http_action_set_req_line() retunrs 0, in succes case. This patch changes the return code of this function. --- src/proto_http.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/proto_http.c b/src/proto_http.c index 611a8c194..206ddcb6e 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -11648,8 +11648,8 @@ static int sample_conv_q_prefered(struct session *session, const struct arg *arg * the relevant part of the request line accordingly. Then it updates various * pointers to the next elements which were moved, and the total buffer length. * It finds the action to be performed in p[2], previously filled by function - * parse_set_req_line(). It returns 0 in case of success, -1 in case of internal - * error, though this can be revisited when this code is finally exploited. + * parse_set_req_line(). It always returns 1. If an error occurs the action + * is canceled, but the rule processing continue. */ int http_action_set_req_line(struct http_req_rule *rule, struct proxy *px, struct session *s, struct http_txn *txn) { @@ -11722,13 +11722,13 @@ int http_action_set_req_line(struct http_req_rule *rule, struct proxy *px, struc break; default: - return -1; + return 1; } /* commit changes and adjust end of message */ delta = buffer_replace2(s->req.buf, cur_ptr, cur_end, trash.str + offset, trash.len - offset); http_msg_move_end(&txn->req, delta); - return 0; + return 1; } /* parse an http-request action among :