mirror of
https://github.com/haproxy/haproxy.git
synced 2026-04-15 21:59:41 -04:00
[BUG] fix pointer initializations for TCP connections.
Very recent changes consisting in moving some pointers to the transaction instead of the session have lead to a bug because those pointers were only initialized if the protocol was HTTP, but they were freed based on their value. In some cases, it was possible to cause double frees.
This commit is contained in:
parent
aa9dce3bd6
commit
042cc79e59
1 changed files with 7 additions and 3 deletions
10
src/client.c
10
src/client.c
|
|
@ -196,15 +196,19 @@ int event_accept(int fd) {
|
|||
|
||||
txn = &s->txn;
|
||||
txn->flags = 0;
|
||||
/* Those variables will be checked and freed if non-NULL in
|
||||
* session.c:session_free(). It is important that they are
|
||||
* properly initialized.
|
||||
*/
|
||||
txn->srv_cookie = NULL;
|
||||
txn->cli_cookie = NULL;
|
||||
txn->uri = NULL;
|
||||
txn->req.cap = NULL;
|
||||
txn->rsp.cap = NULL;
|
||||
txn->hdr_idx.v = NULL;
|
||||
txn->hdr_idx.size = txn->hdr_idx.used = 0;
|
||||
|
||||
if (p->mode == PR_MODE_HTTP) {
|
||||
txn->uri = NULL;
|
||||
txn->cli_cookie = NULL;
|
||||
txn->srv_cookie = NULL;
|
||||
txn->status = -1;
|
||||
|
||||
txn->req.msg_state = HTTP_MSG_RQBEFORE; /* at the very beginning of the request */
|
||||
|
|
|
|||
Loading…
Reference in a new issue