The unified diff between revisions [718cfb3b..] and [1b553632..] is displayed below. It can also be downloaded as a raw diff.
This diff has been restricted to the following files: 'src/client_side.c'
#
#
# patch "src/client_side.c"
# from [671e6d455044433ea7cf317f99e7faeb3dadb80f]
# to [f2f0d2e1e191ffeec9c101a29a66353d9b9cdc0d]
#
============================================================
--- src/client_side.c 671e6d455044433ea7cf317f99e7faeb3dadb80f
+++ src/client_side.c f2f0d2e1e191ffeec9c101a29a66353d9b9cdc0d
@@ -872,14 +872,18 @@ httpRequestFree(void *data)
http->al.cache.code = http->log_type;
http->al.cache.msec = tvSubMsec(http->start, current_time);
if (request) {
- Packer p;
- MemBuf mb;
- memBufDefInit(&mb);
- packerToMemInit(&p, &mb);
- httpHeaderPackInto(&request->header, &p);
+ if (Config.onoff.log_mime_hdrs) {
+ Packer p;
+ MemBuf mb;
+ memBufDefInit(&mb);
+ packerToMemInit(&p, &mb);
+ httpHeaderPackInto(&request->header, &p);
+ http->al.headers.request = xstrdup(mb.buf);
+ packerClean(&p);
+ memBufClean(&mb);
+ }
http->al.http.method = request->method;
http->al.http.version = request->http_ver;
- http->al.headers.request = xstrdup(mb.buf);
http->al.hier = request->hier;
if (request->auth_user_request) {
if (authenticateUserRequestUsername(request->auth_user_request))
@@ -889,12 +893,17 @@ httpRequestFree(void *data)
}
if (conn->rfc931[0])
http->al.cache.rfc931 = conn->rfc931;
- packerClean(&p);
- memBufClean(&mb);
}
- accessLogLog(&http->al);
- clientUpdateCounters(http);
- clientdbUpdate(conn->peer.sin_addr, http->log_type, PROTO_HTTP, http->out.size);
+ http->al.request = request;
+ if (!http->acl_checklist)
+ http->acl_checklist = clientAclChecklistCreate(Config.accessList.http, http);
+ http->acl_checklist->reply = http->reply;
+ if (!Config.accessList.log || aclCheckFast(Config.accessList.log, http->acl_checklist)) {
+ http->al.reply = http->reply;
+ accessLogLog(&http->al, http->acl_checklist);
+ clientUpdateCounters(http);
+ clientdbUpdate(conn->peer.sin_addr, http->log_type, PROTO_HTTP, http->out.size);
+ }
}
if (http->acl_checklist)
aclChecklistFree(http->acl_checklist);
@@ -905,6 +914,7 @@ httpRequestFree(void *data)
safe_free(http->al.headers.request);
safe_free(http->al.headers.reply);
safe_free(http->al.cache.authuser);
+ http->al.request = NULL;
safe_free(http->redirect.location);
stringClean(&http->range_iter.boundary);
if ((e = http->entry)) {
@@ -2050,8 +2060,6 @@ clientSendMoreData(void *data, char *buf
http->entry = clientCreateStoreEntry(http, http->request->method,
null_request_flags);
errorAppendEntry(http->entry, err);
- httpReplyDestroy(http->reply);
- http->reply = NULL;
memFree(buf, MEM_CLIENT_SOCK_BUF);
return;
}
@@ -2086,8 +2094,6 @@ clientSendMoreData(void *data, char *buf
http->entry = clientCreateStoreEntry(http, http->request->method,
null_request_flags);
errorAppendEntry(http->entry, err);
- httpReplyDestroy(http->reply);
- http->reply = NULL;
memFree(buf, MEM_CLIENT_SOCK_BUF);
return;
}