From: André Malo Date: Mon, 28 Jul 2003 21:31:06 +0000 (+0000) Subject: cleanup rewritelog function. X-Git-Tag: pre_ajp_proxy~1338 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=008aaa8136029b9019428348a8ae60bfca56d840;p=apache cleanup rewritelog function. - shorten the code - improve efficiency and readability - get a rid of fixed buffers - use %pp format string for pointers git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@100827 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/mappers/mod_rewrite.c b/modules/mappers/mod_rewrite.c index 7200c59753..a27e538413 100644 --- a/modules/mappers/mod_rewrite.c +++ b/modules/mappers/mod_rewrite.c @@ -439,85 +439,48 @@ static int open_rewritelog(server_rec *s, apr_pool_t *p) return 1; } -static void rewritelog(request_rec *r, int level, const char *text, ...) +static void rewritelog(request_rec *r, int level, const char *fmt, ...) { rewrite_server_conf *conf; - conn_rec *conn; - char *str1; - char str2[512]; - char str3[1024]; - const char *type; - char redir[20]; /* enough for "/redir#%d" if int is 32 bit */ - va_list ap; - int i; + char *logline, *text; + const char *rhost, *rname; apr_size_t nbytes; - request_rec *req; - char *ruser; - const char *rhost; + int redir; apr_status_t rv; + request_rec *req; + va_list ap; - va_start(ap, text); conf = ap_get_module_config(r->server->module_config, &rewrite_module); - conn = r->connection; - if (conf->rewritelogfp == NULL) { - return; - } - if (conf->rewritelogfile == NULL) { + if (!conf->rewritelogfp || level > conf->rewriteloglevel) { return; } - if (*(conf->rewritelogfile) == '\0') { - return; - } - - if (level > conf->rewriteloglevel) { - return; - } - - if (r->user == NULL) { - ruser = "-"; - } - else if (strlen(r->user) != 0) { - ruser = r->user; - } - else { - ruser = "\"\""; - } - rhost = ap_get_remote_host(conn, r->per_dir_config, + rhost = ap_get_remote_host(r->connection, r->per_dir_config, REMOTE_NOLOOKUP, NULL); - if (rhost == NULL) { - rhost = "UNKNOWN-HOST"; - } - - str1 = apr_pstrcat(r->pool, rhost, " ", - (conn->remote_logname != NULL ? - conn->remote_logname : "-"), " ", - ruser, NULL); - apr_vsnprintf(str2, sizeof(str2), text, ap); + rname = ap_get_remote_logname(r); - if (r->main == NULL) { - type = "initial"; - } - else { - type = "subreq"; + for (redir=0, req=r; req->prev; req = req->prev) { + ++redir; } - for (i = 0, req = r; req->prev != NULL; req = req->prev) { - i++; - } - if (i == 0) { - redir[0] = '\0'; - } - else { - apr_snprintf(redir, sizeof(redir), "/redir#%d", i); - } + va_start(ap, fmt); + text = apr_pvsprintf(r->pool, fmt, ap); + va_end(ap); - apr_snprintf(str3, sizeof(str3), - "%s %s [%s/sid#%lx][rid#%lx/%s%s] (%d) %s" APR_EOL_STR, str1, - current_logtime(r), ap_get_server_name(r), - (unsigned long)(r->server), (unsigned long)r, - type, redir, level, str2); + logline = apr_psprintf(r->pool, "%s %s %s %s [%s/sid#%pp][rid#%pp/%s%s%s] " + "(%d) %s" APR_EOL_STR, + rhost ? rhost : "UNKNOWN-HOST", + rname ? rname : "-", + r->user ? (*r->user ? r->user : "\"\"") : "-", + current_logtime(r), + ap_get_server_name(r), + (void *)(r->server), + (void *)r, + r->main ? "subreq" : "initial", + redir ? "/redir#" : "", + redir ? apr_itoa(r->pool, redir) : "", + level, text); rv = apr_global_mutex_lock(rewrite_log_lock); if (rv != APR_SUCCESS) { @@ -525,8 +488,10 @@ static void rewritelog(request_rec *r, int level, const char *text, ...) "apr_global_mutex_lock(rewrite_log_lock) failed"); /* XXX: Maybe this should be fatal? */ } - nbytes = strlen(str3); - apr_file_write(conf->rewritelogfp, str3, &nbytes); + + nbytes = strlen(logline); + apr_file_write(conf->rewritelogfp, logline, &nbytes); + rv = apr_global_mutex_unlock(rewrite_log_lock); if (rv != APR_SUCCESS) { ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, @@ -534,7 +499,6 @@ static void rewritelog(request_rec *r, int level, const char *text, ...) /* XXX: Maybe this should be fatal? */ } - va_end(ap); return; }