MINOR: stream-int: make si_idle_conn() only accept valid connections

This function is now dedicated to idle connections only, which means
that it must not be used without any endpoint nor anything not a
connection. The connection remains attached to the stream interface.
This commit is contained in:
Willy Tarreau 2015-08-05 11:08:30 +02:00
parent 323a2d925c
commit 4320eaac62
2 changed files with 9 additions and 12 deletions

View File

@ -167,17 +167,15 @@ static inline void si_release_endpoint(struct stream_interface *si)
si_detach_endpoint(si);
}
/* Turn a possibly existing connection endpoint of stream interface <si> to
* idle mode, which means that the connection will be polled for incoming events
* and might be killed by the underlying I/O handler. If <pool> is not null, the
* connection will also be added at the head of this list.
/* Turn an existing connection endpoint of stream interface <si> to idle mode,
* which means that the connection will be polled for incoming events and might
* be killed by the underlying I/O handler. If <pool> is not null, the
* connection will also be added at the head of this list. This connection
* remains assigned to the stream interface it is currently attached to.
*/
static inline void si_idle_conn(struct stream_interface *si, struct list *pool)
{
struct connection *conn = objt_conn(si->end);
if (!conn)
return;
struct connection *conn = __objt_conn(si->end);
if (pool)
LIST_ADD(pool, &conn->list);

View File

@ -5186,11 +5186,10 @@ void http_end_txn_clean_session(struct stream *s)
channel_auto_close(&s->res);
/* we're in keep-alive with an idle connection, monitor it */
srv = NULL;
if (srv_conn)
if (srv_conn) {
srv = objt_server(srv_conn->target);
si_idle_conn(&s->si[1], srv ? &srv->priv_conns : NULL);
si_idle_conn(&s->si[1], srv ? &srv->priv_conns : NULL);
}
s->req.analysers = strm_li(s)->analysers;
s->res.analysers = 0;