From ff9c276c144bc24c70f1d5b531a8fd412c34c3d9 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Fri, 13 Oct 2023 12:17:45 +0000 Subject: Improved logging system Signed-off-by: Laurent Bercot --- src/libtipidee/tipidee_log_answer.c | 2 +- src/libtipidee/tipidee_log_request.c | 27 ++++++++++++++++++--------- src/libtipidee/tipidee_response_error.c | 4 ++-- src/libtipidee/tipidee_response_status.c | 9 ++------- 4 files changed, 23 insertions(+), 19 deletions(-) (limited to 'src/libtipidee') diff --git a/src/libtipidee/tipidee_log_answer.c b/src/libtipidee/tipidee_log_answer.c index ae4e880..15dbe46 100644 --- a/src/libtipidee/tipidee_log_answer.c +++ b/src/libtipidee/tipidee_log_answer.c @@ -8,7 +8,7 @@ #include -void tipidee_log_answer (uint32_t v, tipidee_rql const *rql, unsigned int status, off_t size) +void tipidee_log_answer (uint32_t v, tipidee_rql const *rql, unsigned int status, uint64_t size) { char const *a[6] = { PROG, ": info:" } ; size_t m = 2 ; diff --git a/src/libtipidee/tipidee_log_request.c b/src/libtipidee/tipidee_log_request.c index a789ca5..a50169d 100644 --- a/src/libtipidee/tipidee_log_request.c +++ b/src/libtipidee/tipidee_log_request.c @@ -7,25 +7,34 @@ #include #include +#include #include -void tipidee_log_request (uint32_t v, tipidee_rql const *rql, char const *referrer, char const *ua, stralloc *sa) +void tipidee_log_request (uint32_t v, tipidee_rql const *rql, tipidee_headers const *hdr, stralloc *sa) { char const *a[16] = { PROG, ": info:" } ; size_t m = 2 ; - size_t start = sa->len ; - size_t refpos = start, uapos = start ; + size_t start = sa->len ; /* assert: not zero */ + size_t refpos = 0, uapos = 0 ; if (!(v & TIPIDEE_LOG_REQUEST)) return ; if (!string_quotes(sa, rql->uri.path)) goto eerr ; if (v & TIPIDEE_LOG_REFERRER) { - refpos = sa->len ; - if (!string_quotes(sa, referrer) || !stralloc_0(sa)) goto err ; + char const *x = tipidee_headers_search(hdr, "Referrer") ; + if (x) + { + refpos = sa->len ; + if (!string_quotes(sa, x) || !stralloc_0(sa)) goto err ; + } } if (v & TIPIDEE_LOG_UA) { - uapos = sa->len ; - if (!string_quotes(sa, ua) || !stralloc_0(sa)) goto err ; + char const *x = tipidee_headers_search(hdr, "User-Agent") ; + if (x) + { + uapos = sa->len ; + if (!string_quotes(sa, x) || !stralloc_0(sa)) goto err ; + } } if (v & TIPIDEE_LOG_HOSTASPREFIX) { @@ -48,12 +57,12 @@ void tipidee_log_request (uint32_t v, tipidee_rql const *rql, char const *referr } a[m++] = " http 1." ; a[m++] = rql->http_minor ? "1" : "0" ; - if (v & TIPIDEE_LOG_REFERRER) + if (refpos) { a[m++] = " referrer " ; a[m++] = sa->s + refpos ; } - if (v & TIPIDEE_LOG_UA) + if (uapos) { a[m++] = " user-agent " ; a[m++] = sa->s + uapos ; diff --git a/src/libtipidee/tipidee_response_error.c b/src/libtipidee/tipidee_response_error.c index e2687a4..7c77e80 100644 --- a/src/libtipidee/tipidee_response_error.c +++ b/src/libtipidee/tipidee_response_error.c @@ -9,14 +9,14 @@ #include #include -size_t tipidee_response_error (buffer *b, tipidee_rql const *rql, char const *rsl, char const *text, uint32_t options) +size_t tipidee_response_error (buffer *b, tipidee_rql const *rql, unsigned int status, char const *rsl, char const *text, uint32_t options) { size_t n = 0 ; static char const txt1[] = "\n" ; static char const txt2[] = "\n\n

" ; static char const txt3[] = "

\n

\n" ; static char const txt4[] = "\n

\n\n\n" ; - n += tipidee_response_status_line(b, rql, rsl) ; + n += tipidee_response_status(b, rql, status, rsl) ; n += tipidee_response_header_common_put_g(buffer_1, options) ; if (!(options & 2)) { diff --git a/src/libtipidee/tipidee_response_status.c b/src/libtipidee/tipidee_response_status.c index aedec39..4315f61 100644 --- a/src/libtipidee/tipidee_response_status.c +++ b/src/libtipidee/tipidee_response_status.c @@ -14,13 +14,8 @@ size_t tipidee_response_status (buffer *b, tipidee_rql const *rql, unsigned int n += buffer_putnoflush(b, ".", 1) ; n += buffer_putnoflush(b, fmt, uint_fmt(fmt, rql->http_major ? rql->http_minor : 1)) ; n += buffer_putnoflush(b, " ", 1) ; - if (status) - { - char fmt[UINT_FMT] ; - size_t m = uint_fmt(fmt, status) ; - n += buffer_putnoflush(b, fmt, m) ; - n += buffer_putnoflush(b, " ", 1) ; - } + n += buffer_putnoflush(b, fmt, uint_fmt(fmt, status)) ; + n += buffer_putnoflush(b, " ", 1) ; n += buffer_putsnoflush(b, line) ; n += buffer_putnoflush(b, "\r\n", 2) ; return n ; -- cgit v1.2.3