mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-22 06:11:32 +02:00
MEDIUM: stream-int: simplify si_alloc_conn()
Since we now always call this function with the reuse parameter cleared, let's simplify the function's logic as it cannot return the existing connection anymore. The savings on this inline function are appreciable (240 bytes) : $ size haproxy.old haproxy.new text data bss dec hex filename 1020383 40816 36928 1098127 10c18f haproxy.old 1020143 40816 36928 1097887 10c09f haproxy.new
This commit is contained in:
parent
c12b5e663d
commit
973a54235f
@ -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 <reuse> 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)
|
||||
|
@ -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;
|
||||
|
@ -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"));
|
||||
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user