From: Willy Tarreau Date: Sat, 4 Apr 2015 22:38:48 +0000 (+0200) Subject: MINOR: session: introduce session_new() X-Git-Tag: v1.6-dev2~242 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c38f71cfcd68a1aae5cbd3b6db8c87665052751c;p=thirdparty%2Fhaproxy.git MINOR: session: introduce session_new() This one creates a new session and does the minimum initialization. --- diff --git a/include/proto/session.h b/include/proto/session.h index 3f008e16e3..cb4deeceb5 100644 --- a/include/proto/session.h +++ b/include/proto/session.h @@ -33,6 +33,7 @@ #include extern struct pool_head *pool2_session; +struct session *session_new(struct proxy *fe, struct listener *li, enum obj_type *origin); void session_free(struct session *sess); int init_session(); int session_accept_fd(struct listener *l, int cfd, struct sockaddr_storage *addr); diff --git a/src/session.c b/src/session.c index 070c340b89..5580d4f3dd 100644 --- a/src/session.c +++ b/src/session.c @@ -42,6 +42,27 @@ struct data_cb sess_conn_cb = { .init = conn_complete_session, }; +/* Create a a new session and assign it to frontend , listener
  • , + * 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(). + */ +struct session *session_new(struct proxy *fe, struct listener *li, enum obj_type *origin) +{ + struct session *sess; + + sess = pool_alloc2(pool2_session); + if (sess) { + sess->listener = li; + sess->fe = fe; + sess->origin = origin; + sess->accept_date = date; /* user-visible date for logging */ + sess->tv_accept = now; /* corrected date for internal use */ + memset(sess->stkctr, 0, sizeof(sess->stkctr)); + } + return sess; +} + void session_free(struct session *sess) { session_store_counters(sess);