diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h index dac4c0a19..449d5e6bc 100644 --- a/include/proto/stream_interface.h +++ b/include/proto/stream_interface.h @@ -271,27 +271,15 @@ static inline void si_applet_stop_get(struct stream_interface *si) } /* Try to allocate a new connection and assign it to the interface. If - * a connection was previously allocated and the flag is set, - * it is returned unmodified. Otherwise it is reset. + * an endpoint was previously allocated, it is released first. The newly + * allocated connection is initialized, assigned to the stream interface, + * and returned. */ -/* Returns the stream interface's existing connection if one such already - * exists, or tries to allocate and initialize a new one which is then - * assigned to the stream interface. - */ -static inline struct connection *si_alloc_conn(struct stream_interface *si, int reuse) +static inline struct connection *si_alloc_conn(struct stream_interface *si) { struct connection *conn; - /* If we find a reusable connection, we return it, otherwise we start - * by releasing what we have (non-reusable conn or applet). - */ - if (si->end) { - conn = objt_conn(si->end); - if (conn && reuse) - return conn; - - si_release_endpoint(si); - } + si_release_endpoint(si); conn = conn_new(); if (conn) diff --git a/src/backend.c b/src/backend.c index a1c700765..f8185d7fe 100644 --- a/src/backend.c +++ b/src/backend.c @@ -1051,7 +1051,7 @@ int connect_server(struct stream *s) } if (!reuse) - srv_conn = si_alloc_conn(&s->si[1], 0); + srv_conn = si_alloc_conn(&s->si[1]); if (!srv_conn) return SF_ERR_RESOURCE; diff --git a/src/hlua.c b/src/hlua.c index 6fe3797bc..1c2938b85 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -2062,7 +2062,7 @@ __LJMP static int hlua_socket_connect(struct lua_State *L) ip = MAY_LJMP(luaL_checkstring(L, 2)); port = MAY_LJMP(luaL_checkinteger(L, 3)); - conn = si_alloc_conn(&socket->s->si[1], 0); + conn = si_alloc_conn(&socket->s->si[1]); if (!conn) WILL_LJMP(luaL_error(L, "connect: internal error")); diff --git a/src/proto_http.c b/src/proto_http.c index 18a9455c9..161939a37 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -4477,7 +4477,7 @@ int http_process_request(struct stream *s, struct channel *req, int an_bit) char *path; /* Note that for now we don't reuse existing proxy connections */ - if (unlikely((conn = si_alloc_conn(&s->si[1], 0)) == NULL)) { + if (unlikely((conn = si_alloc_conn(&s->si[1])) == NULL)) { txn->req.msg_state = HTTP_MSG_ERROR; txn->status = 500; req->analysers = 0;