Log all transactions including those with uncertain status or no sent response. Excluding those transactions from access log hides valuable information. For example, it hides certain aborted client transactions which sometimes indicate Squid bugs or configuration problems that the administrator can fix. It also leads to wrong statistics reporting if the reporting tools are based on access logs information. === modified file 'src/client_side.cc' --- src/client_side.cc 2011-03-26 02:03:49 +0000 +++ src/client_side.cc 2011-03-31 18:50:41 +0000 @@ -598,41 +598,44 @@ if (request->content_length > 0) // negative when no body or unknown length aLogEntry->cache.requestSize += request->content_length; aLogEntry->cache.extuser = request->extacl_user.termedBuf(); #if USE_AUTH if (request->auth_user_request != NULL) { if (request->auth_user_request->username()) aLogEntry->cache.authuser = xstrdup(request->auth_user_request->username()); } #endif if (aLogEntry->request) { aLogEntry->request->errType = request->errType; aLogEntry->request->errDetail = request->errDetail; } } void ClientHttpRequest::logRequest() { - if (out.size || logType) { + if (!out.size && !logType) + debugs(33,2, HERE << "logging half-baked transaction: " << log_uri); + + if (true) { al.icp.opcode = ICP_INVALID; al.url = log_uri; debugs(33, 9, "clientLogRequest: al.url='" << al.url << "'"); if (al.reply) { al.http.code = al.reply->sline.status; al.http.content_type = al.reply->content_type.termedBuf(); } else if (loggingEntry() && loggingEntry()->mem_obj) { al.http.code = loggingEntry()->mem_obj->getReply()->sline.status; al.http.content_type = loggingEntry()->mem_obj->getReply()->content_type.termedBuf(); } debugs(33, 9, "clientLogRequest: http.code='" << al.http.code << "'"); if (loggingEntry() && loggingEntry()->mem_obj) al.cache.objectSize = loggingEntry()->contentLen(); al.cache.caddr.SetNoAddr(); if (getConn() != NULL) al.cache.caddr = getConn()->log_addr;