Mercurial > blahgd > fmt4
changeset 1082:7c32c7d15928
error: store scgi connection id in a thread-local variable
Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author | Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
---|---|
date | Wed, 30 Aug 2017 15:19:09 +0300 |
parents | b8ae4fd66635 |
children | c8d534dfe4df |
files | debug.h error.c req.c |
diffstat | 3 files changed, 14 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/debug.h Wed Aug 30 15:15:36 2017 +0300 +++ b/debug.h Wed Aug 30 15:19:09 2017 +0300 @@ -28,6 +28,8 @@ #define DBG(...) cmn_err(CE_DEBUG, __VA_ARGS__) +extern void set_session(uint32_t id); + extern struct jeffpc_ops init_ops; #endif
--- a/error.c Wed Aug 30 15:15:36 2017 +0300 +++ b/error.c Wed Aug 30 15:19:09 2017 +0300 @@ -26,6 +26,9 @@ #include <syslog.h> #include <stdarg.h> +/* session info */ +static __thread uint32_t session_id; + static void mylog(int level, const char *fmt, va_list ap) { char msg[512]; @@ -38,6 +41,11 @@ syslog(LOG_LOCAL0 | level, "%s", msg); } +void set_session(uint32_t id) +{ + session_id = id; +} + struct jeffpc_ops init_ops = { .log = mylog, };
--- a/req.c Wed Aug 30 15:15:36 2017 +0300 +++ b/req.c Wed Aug 30 15:19:09 2017 +0300 @@ -48,6 +48,8 @@ void req_init(struct req *req, struct scgi *scgi) { + set_session(scgi->id); + memset(req, 0, sizeof(struct req)); req->scgi = scgi; @@ -221,6 +223,8 @@ log_request(req); vars_destroy(&req->vars); + + set_session(0); } void req_head(struct req *req, const char *name, const char *val)