Author: markt Date: Tue Sep 27 20:19:01 2011 New Revision: 1176592 URL: http://svn.apache.org/viewvc?rev=1176592&view=rev Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=51872 Ensure access log always logs the correct remote IP. Ensure requests with multiple errors do not result in multiple access log entries.
Modified: tomcat/tc7.0.x/trunk/ (props changed) tomcat/tc7.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.java tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpProcessor.java tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Propchange: tomcat/tc7.0.x/trunk/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Sep 27 20:19:01 2011 @@ -1 +1 @@ -/tomcat/trunk:1156171,1156276,1156304,1156519,1156530,1156602,1157015,1157018,1157151,1157198,1157204,1157810,1157832,1157834,1157847,1157908,1157939,1158155,1158160,1158176,1158195,1158198-1158199,1158227,1158331,1158334-1158335,1158426,1160347,1160592,1160611,1160619,1160626,1160639,1160652,1160720-1160721,1160772,1160774,1160776,1161303,1161310,1161322,1161339,1161486,1161540,1161549,1161584,1162082,1162149,1162169,1162721,1162769,1162836,1162932,1163630,1164419,1164438,1164469,1164480,1164567,1165234,1165247-1165248,1165253,1165273,1165282,1165309,1165331,1165338,1165347,1165360-1165361,1165367-1165368,1165602,1165608,1165677,1165693,1165721,1165723,1165728,1165730,1165738,1165746,1165765,1165777,1165918,1165921,1166077,1166150-1166151,1166290,1166366,1166620,1166686,1166752,1166757,1167368,1167394,1169447,1170647,1171692,1172233-1172234,1172236,1172269,1172278,1172282,1172610,1172664,1172689,1172711,1173020-1173021,1173082,1173088,1173090,1173096,1173241,1173256,1173288 ,1173333,1173342,1173461,1173614,1173630,1173659,1173722,1174061,1174239,1174322,1174325,1174329-1174330,1174337-1174339,1174343,1174353,1174799,1174882,1174884,1174983,1175155,1175158,1175167,1175182,1175190,1175201,1175272,1175275,1175283,1175582,1175589-1175590,1175594,1175602,1175613,1175633,1175713,1175889,1175896,1175907,1176584 +/tomcat/trunk:1156171,1156276,1156304,1156519,1156530,1156602,1157015,1157018,1157151,1157198,1157204,1157810,1157832,1157834,1157847,1157908,1157939,1158155,1158160,1158176,1158195,1158198-1158199,1158227,1158331,1158334-1158335,1158426,1160347,1160592,1160611,1160619,1160626,1160639,1160652,1160720-1160721,1160772,1160774,1160776,1161303,1161310,1161322,1161339,1161486,1161540,1161549,1161584,1162082,1162149,1162169,1162721,1162769,1162836,1162932,1163630,1164419,1164438,1164469,1164480,1164567,1165234,1165247-1165248,1165253,1165273,1165282,1165309,1165331,1165338,1165347,1165360-1165361,1165367-1165368,1165602,1165608,1165677,1165693,1165721,1165723,1165728,1165730,1165738,1165746,1165765,1165777,1165918,1165921,1166077,1166150-1166151,1166290,1166366,1166620,1166686,1166752,1166757,1167368,1167394,1169447,1170647,1171692,1172233-1172234,1172236,1172269,1172278,1172282,1172610,1172664,1172689,1172711,1173020-1173021,1173082,1173088,1173090,1173096,1173241,1173256,1173288 ,1173333,1173342,1173461,1173614,1173630,1173659,1173722,1174061,1174239,1174322,1174325,1174329-1174330,1174337-1174339,1174343,1174353,1174799,1174882,1174884,1174983,1175155,1175158,1175167,1175182,1175190,1175201,1175272,1175275,1175283,1175582,1175589-1175590,1175594,1175602,1175613,1175633,1175713,1175889,1175896,1175907,1176584,1176590 Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=1176592&r1=1176591&r2=1176592&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Tue Sep 27 20:19:01 2011 @@ -466,10 +466,8 @@ public class CoyoteAdapter implements Ad Request request = (Request) req.getNote(ADAPTER_NOTES); Response response = (Response) res.getNote(ADAPTER_NOTES); - boolean create = false; if (request == null) { - create = true; // Create objects request = connector.createRequest(); request.setCoyoteRequest(req); @@ -511,9 +509,7 @@ public class CoyoteAdapter implements Ad } catch (Throwable t) { ExceptionUtils.handleThrowable(t); log.warn(sm.getString("coyoteAdapter.accesslogFail"), t); - } - - if (create) { + } finally { request.recycle(); response.recycle(); } Modified: tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java?rev=1176592&r1=1176591&r2=1176592&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java Tue Sep 27 20:19:01 2011 @@ -759,7 +759,6 @@ public abstract class AbstractAjpProcess secret = true; if (!tmpMB.equals(requiredSecret)) { response.setStatus(403); - adapter.log(request, response, 0); error = true; } } @@ -776,7 +775,6 @@ public abstract class AbstractAjpProcess // Check if secret was submitted if required if ((requiredSecret != null) && !secret) { response.setStatus(403); - adapter.log(request, response, 0); error = true; } @@ -810,6 +808,9 @@ public abstract class AbstractAjpProcess MessageBytes valueMB = request.getMimeHeaders().getValue("host"); parseHost(valueMB); + if (error) { + adapter.log(request, response, 0); + } } @@ -825,7 +826,6 @@ public abstract class AbstractAjpProcess request.serverName().duplicate(request.localName()); } catch (IOException e) { response.setStatus(400); - adapter.log(request, response, 0); error = true; } return; @@ -877,7 +877,6 @@ public abstract class AbstractAjpProcess error = true; // 400 - Bad request response.setStatus(400); - adapter.log(request, response, 0); break; } port = port + (charValue * mult); Modified: tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java?rev=1176592&r1=1176591&r2=1176592&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java Tue Sep 27 20:19:01 2011 @@ -182,7 +182,7 @@ public class AjpAprProcessor extends Abs } } - if (!cping && endpoint.isPaused()) { + if (!error && !cping && endpoint.isPaused()) { // 503 - Service unavailable response.setStatus(503); adapter.log(request, response, 0); Modified: tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.java?rev=1176592&r1=1176591&r2=1176592&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.java Tue Sep 27 20:19:01 2011 @@ -169,7 +169,7 @@ public class AjpNioProcessor extends Abs } } - if (!cping && endpoint.isPaused()) { + if (!error && !cping && endpoint.isPaused()) { // 503 - Service unavailable response.setStatus(503); adapter.log(request, response, 0); Modified: tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpProcessor.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpProcessor.java?rev=1176592&r1=1176591&r2=1176592&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpProcessor.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpProcessor.java Tue Sep 27 20:19:01 2011 @@ -185,7 +185,7 @@ public class AjpProcessor extends Abstra } } - if (!cping && endpoint.isPaused()) { + if (!error && !cping && endpoint.isPaused()) { // 503 - Service unavailable response.setStatus(503); adapter.log(request, response, 0); Modified: tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java?rev=1176592&r1=1176591&r2=1176592&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Tue Sep 27 20:19:01 2011 @@ -897,7 +897,6 @@ public abstract class AbstractHttp11Proc if (endpoint.isPaused()) { // 503 - Service unavailable response.setStatus(503); - adapter.log(request, response, 0); error = true; } else { request.setStartTime(System.currentTimeMillis()); @@ -1087,7 +1086,6 @@ public abstract class AbstractHttp11Proc " Unsupported HTTP version \""+protocolMB+"\""); } response.setStatus(505); - adapter.log(request, response, 0); } MessageBytes methodMB = request.method(); @@ -1183,7 +1181,6 @@ public abstract class AbstractHttp11Proc error = true; // 501 - Unimplemented response.setStatus(501); - adapter.log(request, response, 0); } startPos = commaPos + 1; commaPos = transferEncodingValue.indexOf(',', startPos); @@ -1199,7 +1196,6 @@ public abstract class AbstractHttp11Proc " Unsupported transfer encoding \""+encodingName+"\""); } response.setStatus(501); - adapter.log(request, response, 0); } } @@ -1222,7 +1218,6 @@ public abstract class AbstractHttp11Proc " host header missing"); } response.setStatus(400); - adapter.log(request, response, 0); } parseHost(valueMB); @@ -1252,6 +1247,10 @@ public abstract class AbstractHttp11Proc request.setAttribute("org.apache.tomcat.comet.timeout.support", Boolean.TRUE); } + + if (error) { + adapter.log(request, response, 0); + } } @@ -1471,7 +1470,6 @@ public abstract class AbstractHttp11Proc error = true; // 400 - Bad request response.setStatus(400); - adapter.log(request, response, 0); break; } port = port + (charValue * mult); @@ -1552,8 +1550,9 @@ public abstract class AbstractHttp11Proc ExceptionUtils.handleThrowable(t); getLog().error(sm.getString("http11processor.request.finish"), t); // 500 - Internal Server Error + // Can't add a 500 to the access log since that has already been + // written in the Adapter.service method. response.setStatus(500); - adapter.log(request, response, 0); error = true; } try { Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1176592&r1=1176591&r2=1176592&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Tue Sep 27 20:19:01 2011 @@ -133,6 +133,11 @@ Ensure Servlets that implement ContainerServlet always get treated as restricted. (markt) </fix> + <fix> + Ensure that the access log always uses the correct value for the remote + IP address associated with the request and that requests with multiple + errors do not result in multiple entires in the access log. (markt) + </fix> </changelog> </subsection> <subsection name="Coyote"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org