modules/http/http_protocol.c | 70 +++++++++++++++++ modules/ssl/mod_ssl.c | 12 +++ modules/ssl/ssl_engine_io.c | 8 ++- server/protocol.c | 174 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 263 insertions(+), 1 deletions(-) diff --git a/modules/http/http_protocol.c b/modules/http/http_protocol.c index d8886af..35a59f1 100644 --- a/modules/http/http_protocol.c +++ b/modules/http/http_protocol.c @@ -1101,6 +1101,12 @@ AP_DECLARE(void) ap_send_error_response(request_rec *r, int recursive_error) int idx = ap_index_of_response(status); char *custom_response; const char *location = apr_table_get(r->headers_out, "Location"); + /* solo */ + server_rec * ss = r->server; + + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_send_error_response: START"); + /* */ /* At this point, we are starting the response over, so we have to reset * this value. @@ -1121,6 +1127,10 @@ AP_DECLARE(void) ap_send_error_response(request_rec *r, int recursive_error) * former. */ if (location == NULL) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_send_error_response: (location == NULL) is TRUE."); + /* */ location = apr_table_get(r->err_headers_out, "Location"); } /* We need to special-case the handling of 204 and 304 responses, @@ -1128,16 +1138,28 @@ AP_DECLARE(void) ap_send_error_response(request_rec *r, int recursive_error) * message body. Note that being assbackwards here is not an option. */ if (status == HTTP_NOT_MODIFIED) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_send_error_response: (status == HTTP_NOT_MODIFIED) is TRUE."); + /* */ ap_finalize_request_protocol(r); return; } if (status == HTTP_NO_CONTENT) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_send_error_response: (status == HTTP_NOT_CONTENT) is TRUE."); + /* */ ap_finalize_request_protocol(r); return; } if (!r->assbackwards) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_send_error_response: (!r->assbackwards) is TRUE; status='%d'", status); + /* */ apr_table_t *tmp = r->headers_out; /* For all HTTP/1.x responses for which we generate the message, @@ -1150,10 +1172,22 @@ AP_DECLARE(void) ap_send_error_response(request_rec *r, int recursive_error) apr_table_clear(r->err_headers_out); if (ap_is_HTTP_REDIRECT(status) || (status == HTTP_CREATED)) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_send_error_response: (ap_is_HTTP_REDIRECT(status) || (status == HTTP_CREATED)) is TRUE."); + /* */ if ((location != NULL) && *location) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_send_error_response: ((location != NULL) && *location) is TRUE."); + /* */ apr_table_setn(r->headers_out, "Location", location); } else { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_send_error_response: ((location != NULL) && *location) is FALSE."); + /* */ location = ""; /* avoids coredump when printing, below */ } } @@ -1164,6 +1198,10 @@ AP_DECLARE(void) ap_send_error_response(request_rec *r, int recursive_error) if (apr_table_get(r->subprocess_env, "suppress-error-charset") != NULL) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_send_error_response: (apr_table_get(r->subprocess_env, \"suppress-error-charset\") != NULL) is TRUE."); + /* */ core_request_config *request_conf = ap_get_module_config(r->request_config, &core_module); request_conf->suppress_charset = 1; /* avoid adding default @@ -1172,21 +1210,37 @@ AP_DECLARE(void) ap_send_error_response(request_rec *r, int recursive_error) ap_set_content_type(r, "text/html"); } else { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_send_error_response: (apr_table_get(r->subprocess_env, \"suppress-error-charset\") != NULL) is FALSE."); + /* */ ap_set_content_type(r, "text/html; charset=iso-8859-1"); } if ((status == HTTP_METHOD_NOT_ALLOWED) || (status == HTTP_NOT_IMPLEMENTED)) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_send_error_response: ((status == HTTP_METHOD_NOT_ALLOWED) || (status == HTTP_NOT_IMPLEMENTED)) is TRUE."); + /* */ apr_table_setn(r->headers_out, "Allow", make_allow(r)); } if (r->header_only) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_send_error_response: (r->header_only) is TRUE."); + /* */ ap_finalize_request_protocol(r); return; } } if ((custom_response = ap_response_code_string(r, idx))) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_send_error_response: (custom_response = ap_response_code_string(r, idx)) is TRUE."); + /* */ /* * We have a custom response output. This should only be * a text-string to write back. But if the ErrorDocument @@ -1204,6 +1258,10 @@ AP_DECLARE(void) ap_send_error_response(request_rec *r, int recursive_error) * it hasn't happened yet; we may never know if it fails. */ if (custom_response[0] == '\"') { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_send_error_response: (custom_response[0] == '\"') is TRUE."); + /* */ ap_rputs(custom_response + 1, r); ap_finalize_request_protocol(r); return; @@ -1223,6 +1281,10 @@ AP_DECLARE(void) ap_send_error_response(request_rec *r, int recursive_error) && apr_isdigit(r->status_line[2]) && apr_isspace(r->status_line[3]) && apr_isalnum(r->status_line[4])) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_send_error_response: (r->status_line != NULL && strlen(r->status_line) > 4 && ...) is TRUE."); + /* */ title = r->status_line; } @@ -1244,6 +1306,10 @@ AP_DECLARE(void) ap_send_error_response(request_rec *r, int recursive_error) NULL); if (recursive_error) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_send_error_response: (recursive_error) is TRUE."); + /* */ ap_rvputs_proto_in_ascii(r, "

Additionally, a ", status_lines[ap_index_of_response(recursive_error)], "\nerror was encountered while trying to use an " @@ -1253,6 +1319,10 @@ AP_DECLARE(void) ap_send_error_response(request_rec *r, int recursive_error) ap_rvputs_proto_in_ascii(r, "\n", NULL); } ap_finalize_request_protocol(r); + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_send_error_response: END."); + /* */ } /* diff --git a/modules/ssl/mod_ssl.c b/modules/ssl/mod_ssl.c index 35d0b88..257156b 100644 --- a/modules/ssl/mod_ssl.c +++ b/modules/ssl/mod_ssl.c @@ -344,12 +344,20 @@ int ssl_init_ssl_connection(conn_rec *c) char *vhost_md5; modssl_ctx_t *mctx; + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, c, + "ssl_init_ssl_connection: START"); + /* */ /* * Seed the Pseudo Random Number Generator (PRNG) */ ssl_rand_seed(c->base_server, c->pool, SSL_RSCTX_CONNECT, ""); if (!sslconn) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, c, + "ssl_init_ssl_connection: (!sslconn) is TRUE"); + /* */ sslconn = ssl_init_connection_ctx(c); } @@ -401,6 +409,10 @@ int ssl_init_ssl_connection(conn_rec *c) ssl_io_filter_init(c, ssl); + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, c, + "ssl_init_ssl_connection: END, return APR_SUCCESS"); + /* */ return APR_SUCCESS; } diff --git a/modules/ssl/ssl_engine_io.c b/modules/ssl/ssl_engine_io.c index fc191d3..c858239 100644 --- a/modules/ssl/ssl_engine_io.c +++ b/modules/ssl/ssl_engine_io.c @@ -832,7 +832,7 @@ static apr_status_t ssl_filter_write(ap_filter_t *f, * request, and tack on an EOS bucket. */ #define HTTP_ON_HTTPS_PORT \ - "GET /" CRLF + "GET / HTTP/1.1" CRLF #define HTTP_ON_HTTPS_PORT_BUCKET(alloc) \ apr_bucket_immortal_create(HTTP_ON_HTTPS_PORT, \ @@ -868,6 +868,12 @@ static apr_status_t ssl_io_filter_error(ap_filter_t *f, /* fake the request line */ bucket = HTTP_ON_HTTPS_PORT_BUCKET(f->c->bucket_alloc); + /* solo */ + ap_log_cerror(APLOG_MARK, APLOG_INFO, 0, f->c, + "ssl_io_filter_error: f->c->bucket_alloc='%s'", f->c->bucket_alloc); + ap_log_cerror(APLOG_MARK, APLOG_INFO, 0, f->c, + "ssl_io_filter_error: bucket->data='%s'", bucket->data); + /* */ break; default: diff --git a/server/protocol.c b/server/protocol.c index b7145bb..5e1337b 100644 --- a/server/protocol.c +++ b/server/protocol.c @@ -216,6 +216,16 @@ AP_DECLARE(apr_status_t) ap_rgetline_core(char **s, apr_size_t n, apr_size_t bytes_handled = 0, current_alloc = 0; char *pos, *last_char = *s; int do_alloc = (*s == NULL), saw_eos = 0; + /* solo */ + server_rec * ss = r->server; + + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: START"); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: START, r->the_request='%s'", r->the_request); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: START, r->input_filters='%s'", r->input_filters); + /* */ /* * Initialize last_char as otherwise a random value will be compared @@ -228,8 +238,18 @@ AP_DECLARE(apr_status_t) ap_rgetline_core(char **s, apr_size_t n, for (;;) { apr_brigade_cleanup(bb); + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: Post apr_brigade_cleanup(bb);"); + /* */ rv = ap_get_brigade(r->input_filters, bb, AP_MODE_GETLINE, APR_BLOCK_READ, 0); + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: Post ap_get_brigade(r->input_filters, bb, ...); r->the_request='%s'", r->the_request); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: Post ap_get_brigade(r->input_filters, bb, ...); r->input_filters='%s'", r->input_filters); + /* */ if (rv != APR_SUCCESS) { return rv; } @@ -246,6 +266,14 @@ AP_DECLARE(apr_status_t) ap_rgetline_core(char **s, apr_size_t n, const char *str; apr_size_t len; + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: for (e = APR_BRIGADE_FIRST(bb);...;e = APR_BUCKET_NEXT(e)), *s='%s'", *s); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: for (e = APR_BRIGADE_FIRST(bb);...;e = APR_BUCKET_NEXT(e)), r->the_request='%s'", r->the_request); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: for (e = APR_BRIGADE_FIRST(bb);...;e = APR_BUCKET_NEXT(e)), r->pool='%s'", r->pool); + /* */ /* If we see an EOS, don't bother doing anything more. */ if (APR_BUCKET_IS_EOS(e)) { saw_eos = 1; @@ -256,6 +284,12 @@ AP_DECLARE(apr_status_t) ap_rgetline_core(char **s, apr_size_t n, if (rv != APR_SUCCESS) { return rv; } + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: apr_bucket_read(e, &str, &len, APR_BLOCK_READ); str='%s'", str); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: apr_bucket_read(e, &str, &len, APR_BLOCK_READ); len='%d'", len); + /* */ if (len == 0) { /* no use attempting a zero-byte alloc (hurts when @@ -269,11 +303,23 @@ AP_DECLARE(apr_status_t) ap_rgetline_core(char **s, apr_size_t n, if (n < bytes_handled + len) { *read = bytes_handled; if (*s) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (*s) is TRUE, *s='%s'", *s); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (*s) is TRUE, r->the_request='%s'", r->the_request); + /* */ /* ensure this string is NUL terminated */ if (bytes_handled > 0) { (*s)[bytes_handled-1] = '\0'; } else { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (*s) is FALSE, *s='%s'", *s); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (*s) is FALSE, r->the_request='%s'", r->the_request); + /* */ (*s)[0] = '\0'; } } @@ -282,15 +328,37 @@ AP_DECLARE(apr_status_t) ap_rgetline_core(char **s, apr_size_t n, /* Do we have to handle the allocation ourselves? */ if (do_alloc) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (do_alloc) is TRUE, r->the_request='%s'", r->the_request); + /* */ /* We'll assume the common case where one bucket is enough. */ if (!*s) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (!*s) is TRUE, *s='%s'", *s); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (!*s) is TRUE, r->the_request='%s'", r->the_request); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (!*s) is TRUE, r->pool='%s'", r->pool); + /* */ current_alloc = len; if (current_alloc < MIN_LINE_ALLOC) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (current_alloc < MIN_LINE_ALLOC) is TRUE, r->the_request='%s'", r->the_request); + /* */ current_alloc = MIN_LINE_ALLOC; } *s = apr_palloc(r->pool, current_alloc); } else if (bytes_handled + len > current_alloc) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (*s) is FALSE, (bytes_handled + len > current_alloc) is TRUE, *s='%s'", *s); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (*s) is FALSE, (bytes_handled + len > current_alloc) is TRUE, r->the_request='%s'", r->the_request); + /* */ /* Increase the buffer size */ apr_size_t new_size = current_alloc * 2; char *new_buffer; @@ -305,8 +373,22 @@ AP_DECLARE(apr_status_t) ap_rgetline_core(char **s, apr_size_t n, memcpy(new_buffer, *s, bytes_handled); current_alloc = new_size; *s = new_buffer; + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (*s) is FALSE, (bytes_handled + len > current_alloc) is TRUE, *s = new_buffer, *s='%s'", *s); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (*s) is FALSE, (bytes_handled + len > current_alloc) is TRUE, r->the_request='%s'", r->the_request); + /* */ } } + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: Post (do_alloc), *s='%s'", *s); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: Post (do_alloc), r->the_request='%s'", r->the_request); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: Post (do_alloc), bytes_handled='%d'", bytes_handled); + /* */ /* Just copy the rest of the data to the end of the old buffer. */ pos = *s + bytes_handled; @@ -315,10 +397,20 @@ AP_DECLARE(apr_status_t) ap_rgetline_core(char **s, apr_size_t n, /* We've now processed that new data - update accordingly. */ bytes_handled += len; + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: Post 2 (do_alloc), *s='%s'", *s); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: Post 2 (do_alloc), r->the_request='%s'", r->the_request); + /* */ } /* If we got a full line of input, stop reading */ if (last_char && (*last_char == APR_ASCII_LF)) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (last_char && (*last_char == APR_ASCII_LF)) is TRUE, r->the_request='%s'", r->the_request); + /* */ break; } } @@ -326,16 +418,28 @@ AP_DECLARE(apr_status_t) ap_rgetline_core(char **s, apr_size_t n, /* Now NUL-terminate the string at the end of the line; * if the last-but-one character is a CR, terminate there */ if (last_char > *s && last_char[-1] == APR_ASCII_CR) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (last_char > *s && last_char[-1] == APR_ASCII_CR) is TRUE, r->the_request='%s'", r->the_request); + /* */ last_char--; } *last_char = '\0'; bytes_handled = last_char - *s; + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: Post (last_char > *s && last_char[-1] == APR_ASCII_CR), r->the_request='%s'", r->the_request); + /* */ /* If we're folding, we have more work to do. * * Note that if an EOS was seen, we know we can't have another line. */ if (fold && bytes_handled && !saw_eos) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (fold && bytes_handled && !saw_eos) is TRUE, r->the_request='%s'", r->the_request); + /* */ for (;;) { const char *str; apr_size_t len; @@ -380,8 +484,16 @@ AP_DECLARE(apr_status_t) ap_rgetline_core(char **s, apr_size_t n, */ c = *str; if (c == APR_ASCII_BLANK || c == APR_ASCII_TAB) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (c == APR_ASCII_BLANK || c == APR_ASCII_TAB) is TRUE, r->the_request='%s'", r->the_request); + /* */ /* Do we have enough space? We may be full now. */ if (bytes_handled >= n) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (bytes_handled >= n) is TRUE, r->the_request='%s'", r->the_request); + /* */ *read = n; /* ensure this string is terminated */ (*s)[n-1] = '\0'; @@ -391,6 +503,10 @@ AP_DECLARE(apr_status_t) ap_rgetline_core(char **s, apr_size_t n, apr_size_t next_size, next_len; char *tmp; + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (bytes_handled >= n) is FALSE, r->the_request='%s'", r->the_request); + /* */ /* If we're doing the allocations for them, we have to * give ourselves a NULL and copy it on return. */ @@ -411,6 +527,10 @@ AP_DECLARE(apr_status_t) ap_rgetline_core(char **s, apr_size_t n, if (do_alloc && next_len > 0) { char *new_buffer; + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (do_alloc && next_len > 0) is TRUE, r->the_request='%s'", r->the_request); + /* */ apr_size_t new_size = bytes_handled + next_len + 1; /* we need to alloc an extra byte for a null */ @@ -429,12 +549,22 @@ AP_DECLARE(apr_status_t) ap_rgetline_core(char **s, apr_size_t n, } } else { /* next character is not tab or space */ + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: (c == APR_ASCII_BLANK || c == APR_ASCII_TAB) is FALSE, r->the_request='%s'", r->the_request); + /* */ break; } } } *read = bytes_handled; + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: END, return APR_SUCCESS"); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "ap_rgetline_core: END, return APR_SUCCESS r->the_request='%s'", r->the_request); + /* */ return APR_SUCCESS; } @@ -566,6 +696,12 @@ static int read_request_line(request_rec *r, apr_bucket_brigade *bb) apr_size_t len; int num_blank_lines = 0; int max_blank_lines = r->server->limit_req_fields; + /* solo */ + server_rec * ss = r->server; + + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "read_request_line: START"); + /* */ if (max_blank_lines <= 0) { max_blank_lines = DEFAULT_LIMIT_REQUEST_FIELDS; @@ -588,6 +724,10 @@ static int read_request_line(request_rec *r, apr_bucket_brigade *bb) do { apr_status_t rv; + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "read_request_line: loop, num_blank_lines=%d", num_blank_lines); + /* */ /* insure ap_rgetline allocates memory each time thru the loop * if there are empty lines @@ -595,6 +735,10 @@ static int read_request_line(request_rec *r, apr_bucket_brigade *bb) r->the_request = NULL; rv = ap_rgetline(&(r->the_request), (apr_size_t)(r->server->limit_req_line + 2), &len, r, 0, bb); + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "read_request_line: loop, r->the_request='%s'", r->the_request); + /* */ if (rv != APR_SUCCESS) { r->request_time = apr_time_now(); @@ -616,6 +760,12 @@ static int read_request_line(request_rec *r, apr_bucket_brigade *bb) r->request_time = apr_time_now(); ll = r->the_request; + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "read_request_line: first, ll='%s'", ll); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "read_request_line: first, ll[0]=%d", ll[0]); + /* */ r->method = ap_getword_white(r->pool, &ll); #if 0 @@ -627,6 +777,12 @@ static int read_request_line(request_rec *r, apr_bucket_brigade *bb) #endif uri = ap_getword_white(r->pool, &ll); + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "read_request_line: post 'uri = ap_getword_white(r->pool, &ll)', ll='%s'", ll); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "read_request_line: post 'uri = ap_getword_white(r->pool, &ll)', ll[0]=%d", ll[0]); + /* */ /* Provide quick information about the request method as soon as known */ @@ -636,12 +792,26 @@ static int read_request_line(request_rec *r, apr_bucket_brigade *bb) } ap_parse_uri(r, uri); + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "read_request_line: post 'ap_parse_uri(r, uri)', ll='%s'", ll); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "read_request_line: post 'ap_parse_uri(r, uri)', ll[0]=%d", ll[0]); + /* */ if (ll[0]) { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "read_request_line: (ll[0]) is TRUE"); + /* */ r->assbackwards = 0; pro = ll; len = strlen(ll); } else { + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "read_request_line: (ll[0]) is FALSE"); + /* */ r->assbackwards = 1; pro = "HTTP/0.9"; len = 8; @@ -664,6 +834,10 @@ static int read_request_line(request_rec *r, apr_bucket_brigade *bb) else r->proto_num = HTTP_VERSION(1, 0); + /* solo */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ss, + "read_request_line: END, return 1"); + /* */ return 1; }