mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-04-19 21:45:33 +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;
|
struct list sessions;
|
||||||
|
|
||||||
static int conn_session_complete(struct connection *conn);
|
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);
|
static struct task *expire_mini_session(struct task *t);
|
||||||
int session_complete(struct session *s);
|
int session_complete(struct session *s);
|
||||||
|
|
||||||
@ -58,7 +59,7 @@ int session_complete(struct session *s);
|
|||||||
struct data_cb sess_conn_cb = {
|
struct data_cb sess_conn_cb = {
|
||||||
.recv = NULL,
|
.recv = NULL,
|
||||||
.send = NULL,
|
.send = NULL,
|
||||||
.wake = NULL,
|
.wake = conn_session_update,
|
||||||
.init = conn_session_complete,
|
.init = conn_session_complete,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -281,6 +282,18 @@ static int conn_session_complete(struct connection *conn)
|
|||||||
return -1;
|
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
|
/* Manages embryonic sessions timeout. It is only called when the timeout
|
||||||
* strikes and performs the required cleanup.
|
* strikes and performs the required cleanup.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user