From 3a42204eeee53d51eb1a3bf6c00b526318f7c198 Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Tue, 4 Sep 2012 08:32:32 +0000 Subject: [PATCH] Let get_content_length() use a header value as input instead of the whole header This makes it easier to use it in combination with get_header_value(). --- parsers.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/parsers.c b/parsers.c index 09a12e4b..575d73f3 100644 --- a/parsers.c +++ b/parsers.c @@ -1,4 +1,4 @@ -const char parsers_rcs[] = "$Id: parsers.c,v 1.246 2012/07/23 12:40:30 fabiankeil Exp $"; +const char parsers_rcs[] = "$Id: parsers.c,v 1.247 2012/07/27 17:36:06 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/parsers.c,v $ @@ -1800,22 +1800,20 @@ static jb_err client_keep_alive(struct client_state *csp, char **header) * Content-Length header. * * Parameters : - * 1 : header = The Content-Length header. + * 1 : header_value = The Content-Length header value. * 2 : length = Storage to return the value. * * Returns : JB_ERR_OK on success, or * JB_ERR_PARSE if no value is recognized. * *********************************************************************/ -static jb_err get_content_length(const char *header, unsigned long long *length) +static jb_err get_content_length(const char *header_value, unsigned long long *length) { - assert(header[14] == ':'); - #ifdef _WIN32 assert(sizeof(unsigned long long) > 4); - if (1 != sscanf(header+14, ": %I64u", length)) + if (1 != sscanf(header_value, "%I64u", length)) #else - if (1 != sscanf(header+14, ": %llu", length)) + if (1 != sscanf(header_value, "%llu", length)) #endif { return JB_ERR_PARSE; @@ -1845,10 +1843,12 @@ static jb_err get_content_length(const char *header, unsigned long long *length) static jb_err client_save_content_length(struct client_state *csp, char **header) { unsigned long long content_length = 0; + const char *header_value; assert(*(*header+14) == ':'); - if (JB_ERR_OK != get_content_length(*header, &content_length)) + header_value = *header + 15; + if (JB_ERR_OK != get_content_length(header_value, &content_length)) { log_error(LOG_LEVEL_ERROR, "Crunching invalid header: %s", *header); freez(*header); @@ -2378,10 +2378,12 @@ static jb_err server_adjust_content_length(struct client_state *csp, char **head static jb_err server_save_content_length(struct client_state *csp, char **header) { unsigned long long content_length = 0; + const char *header_value; assert(*(*header+14) == ':'); - if (JB_ERR_OK != get_content_length(*header, &content_length)) + header_value = *header + 15; + if (JB_ERR_OK != get_content_length(header_value, &content_length)) { log_error(LOG_LEVEL_ERROR, "Crunching invalid header: %s", *header); freez(*header); -- 2.39.2