mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-04-07 01:31:35 +00:00
MEDIUM: session: register a data->wake callback to process errors
The connection layer will soon call ->wake() only when errors happen, and not ->init(). So make the session layer use this callback to detect errors and abort connections.
This commit is contained in:
parent
2396c1c4a2
commit
9683e9a05f
@ -51,6 +51,7 @@ struct pool_head *pool2_session;
|
||||
struct list sessions;
|
||||
|
||||
static int conn_session_complete(struct connection *conn);
|
||||
static int conn_session_update(struct connection *conn);
|
||||
static struct task *expire_mini_session(struct task *t);
|
||||
int session_complete(struct session *s);
|
||||
|
||||
@ -58,7 +59,7 @@ int session_complete(struct session *s);
|
||||
struct data_cb sess_conn_cb = {
|
||||
.recv = NULL,
|
||||
.send = NULL,
|
||||
.wake = NULL,
|
||||
.wake = conn_session_update,
|
||||
.init = conn_session_complete,
|
||||
};
|
||||
|
||||
@ -281,6 +282,18 @@ static int conn_session_complete(struct connection *conn)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Update an embryonic session status. The connection is killed in case of
|
||||
* error, and <0 will be returned. Otherwise it does nothing.
|
||||
*/
|
||||
static int conn_session_update(struct connection *conn)
|
||||
{
|
||||
if (conn->flags & CO_FL_ERROR) {
|
||||
kill_mini_session(conn->owner);
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Manages embryonic sessions timeout. It is only called when the timeout
|
||||
* strikes and performs the required cleanup.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user