strm->do_log = NULL;
strm->res.flags |= CF_READ_DONTWAIT;
- conf->agent_fe.feconn++;
- totalconn++;
-
task_wakeup(SPOE_APPCTX(appctx)->task, TASK_WOKEN_INIT);
LIST_ADDQ(&conf->agent->applets, &SPOE_APPCTX(appctx)->list);
conf->agent->applets_act++;
strm->flags |= SF_DIRECT | SF_ASSIGNED | SF_ADDR_SET | SF_BE_ASSIGNED;
strm->target = &socket_tcp.obj_type;
- /* Update statistics counters. */
- socket_proxy.feconn++; /* beconn will be increased later */
- totalconn++;
-
task_wakeup(strm->task, TASK_WOKEN_INIT);
/* Return yield waiting for connection. */
return 1;
/* Create a a new session and assign it to frontend <fe>, listener <li>,
* origin <origin>, set the current date and clear the stick counters pointers.
* Returns the session upon success or NULL. The session may be released using
- * session_free().
+ * session_free(). Note: <li> may be NULL.
*/
struct session *session_new(struct proxy *fe, struct listener *li, enum obj_type *origin)
{
memset(sess->stkctr, 0, sizeof(sess->stkctr));
vars_init(&sess->vars, SCOPE_SESS);
sess->task = NULL;
+ fe->feconn++;
+ if (fe->feconn > fe->fe_counters.conn_max)
+ fe->fe_counters.conn_max = fe->feconn;
+ if (li)
+ proxy_inc_fe_conn_ctr(li, fe);
+ totalconn++;
jobs++;
}
return sess;
{
if (!LIST_ISEMPTY(&sess->streams))
return;
+ sess->fe->feconn--;
session_store_counters(sess);
vars_prune_per_sess(&sess->vars);
pool_free2(pool2_session, sess);
conn_set_owner(cli_conn, sess);
- p->feconn++;
- /* This session was accepted, count it now */
- if (p->feconn > p->fe_counters.conn_max)
- p->fe_counters.conn_max = p->feconn;
-
- proxy_inc_fe_conn_ctr(l, p);
-
/* now evaluate the tcp-request layer4 rules. We only need a session
* and no stream for these rules.
*/
/* error unrolling */
out_free_sess:
- p->feconn--;
session_free(sess);
out_free_conn:
cli_conn->flags &= ~CO_FL_XPRT_TRACKED;
conn_force_close(conn);
conn_free(conn);
- sess->fe->feconn--;
listener_release(sess->listener);
task_delete(task);