Author: remm
Date: Wed Nov 23 08:06:10 2005
New Revision: 348470

URL: http://svn.apache.org/viewcvs?rev=348470&view=rev
Log:
- Fix crash when a socket is used outside of the process method (for example
  through JMX). I would assume a crash would occur with a socket which had 
  its associated memory pool deallocated.

Modified:
    
tomcat/connectors/trunk/http11/src/java/org/apache/coyote/http11/Http11AprProcessor.java

Modified: 
tomcat/connectors/trunk/http11/src/java/org/apache/coyote/http11/Http11AprProcessor.java
URL: 
http://svn.apache.org/viewcvs/tomcat/connectors/trunk/http11/src/java/org/apache/coyote/http11/Http11AprProcessor.java?rev=348470&r1=348469&r2=348470&view=diff
==============================================================================
--- 
tomcat/connectors/trunk/http11/src/java/org/apache/coyote/http11/Http11AprProcessor.java
 (original)
+++ 
tomcat/connectors/trunk/http11/src/java/org/apache/coyote/http11/Http11AprProcessor.java
 Wed Nov 23 08:06:10 2005
@@ -19,7 +19,6 @@
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InterruptedIOException;
-import java.net.InetAddress;
 import java.util.StringTokenizer;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
@@ -216,7 +215,7 @@
     /**
      * Socket associated with the current connection.
      */
-    protected long socket;
+    protected long socket = 0;
 
 
     /**
@@ -907,6 +906,7 @@
         // Recycle
         inputBuffer.recycle();
         outputBuffer.recycle();
+        this.socket = 0;
 
         return openSocket;
         
@@ -1003,7 +1003,7 @@
         } else if (actionCode == ActionCode.ACTION_REQ_HOST_ADDR_ATTRIBUTE) {
 
             // Get remote host address
-            if (remoteAddr == null) {
+            if (remoteAddr == null && (socket != 0)) {
                 try {
                     long sa = Address.get(Socket.APR_REMOTE, socket);
                     remoteAddr = Address.getip(sa);
@@ -1016,7 +1016,7 @@
         } else if (actionCode == ActionCode.ACTION_REQ_LOCAL_NAME_ATTRIBUTE) {
 
             // Get local host name
-            if (localName == null) {
+            if (localName == null && (socket != 0)) {
                 try {
                     long sa = Address.get(Socket.APR_LOCAL, socket);
                     localName = Address.getnameinfo(sa, 0);
@@ -1029,7 +1029,7 @@
         } else if (actionCode == ActionCode.ACTION_REQ_HOST_ATTRIBUTE) {
 
             // Get remote host name
-            if (remoteHost == null) {
+            if (remoteHost == null && (socket != 0)) {
                 try {
                     long sa = Address.get(Socket.APR_REMOTE, socket);
                     remoteHost = Address.getnameinfo(sa, 0);
@@ -1042,7 +1042,7 @@
         } else if (actionCode == ActionCode.ACTION_REQ_LOCAL_ADDR_ATTRIBUTE) {
 
             // Get local host address
-            if (localAddr == null) {
+            if (localAddr == null && (socket != 0)) {
                 try {
                     long sa = Address.get(Socket.APR_LOCAL, socket);
                     Sockaddr addr = new Sockaddr();
@@ -1060,7 +1060,7 @@
         } else if (actionCode == ActionCode.ACTION_REQ_REMOTEPORT_ATTRIBUTE) {
 
             // Get remote port
-            if (remotePort == -1) {
+            if (remotePort == -1 && (socket != 0)) {
                 try {
                     long sa = Address.get(Socket.APR_REMOTE, socket);
                     Sockaddr addr = Address.getInfo(sa);
@@ -1074,7 +1074,7 @@
         } else if (actionCode == ActionCode.ACTION_REQ_LOCALPORT_ATTRIBUTE) {
 
             // Get local port
-            if (localPort == -1) {
+            if (localPort == -1 && (socket != 0)) {
                 try {
                     long sa = Address.get(Socket.APR_LOCAL, socket);
                     Sockaddr addr = new Sockaddr();



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to