You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2008/03/18 19:43:02 UTC

svn commit: r638500 - /webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java

Author: dims
Date: Tue Mar 18 11:42:52 2008
New Revision: 638500

URL: http://svn.apache.org/viewvc?rev=638500&view=rev
Log:
Fix for AXIS2-3532 - NPE in HttpCoreNIOSender

Modified:
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java?rev=638500&r1=638499&r2=638500&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java Tue Mar 18 11:42:52 2008
@@ -408,18 +408,23 @@
             }
 
             public void failed(SessionRequest request) {
-                handleError(request);
+                handleError(request, false);
             }
 
             public void timeout(SessionRequest request) {
-                handleError(request);
+                // In a timeout occurs the exception field is not updated
+            	// This means that it will be null (see SessionRequestImpl.timeout())
+            	handleError(request, true);
+            	request.cancel();
             }
+            
+           
 
             public void cancelled(SessionRequest sessionRequest) {
 
             }
 
-            private void handleError(SessionRequest request) {
+            private final void handleError(SessionRequest request, boolean isTimeout) {
                 if (request.getAttachment() != null &&
                     request.getAttachment() instanceof Axis2HttpRequest) {
 
@@ -431,15 +436,24 @@
                         // this fault is NOT caused by the endpoint while processing. so we have to
                         // inform that this is a sending error (e.g. endpoint failure) and handle it
                         // differently at the message receiver.
-
-                        Exception exception = request.getException();
-                        MessageContext nioFaultMessageContext =
-                            MessageContextBuilder.createFaultMessageContext(
-                                /** this is not a mistake I do NOT want getMessage()*/
-                                mc, new AxisFault(exception.toString(), exception));
-                        nioFaultMessageContext.setProperty(NhttpConstants.SENDING_FAULT, Boolean.TRUE);
-                        mr.receive(nioFaultMessageContext);
-                        
+                    	AxisFault axisFault;
+                    	if (isTimeout) {
+                    		// In case of a timeout there is no exception
+                    		axisFault = new AxisFault("The connection timed out");
+                    	} else {
+                    		Exception exception = request.getException();
+                    		axisFault = new AxisFault(exception.toString(), exception);
+                    	}
+                    	
+                    	if (mr == null) {
+                    		// FIXME: the message receiver is null if the MEP is out-only
+                    		log.error(axisFault.getMessage());
+                    	} else {
+                    		MessageContext nioFaultMessageContext =
+                    			MessageContextBuilder.createFaultMessageContext(mc, axisFault);
+                        	nioFaultMessageContext.setProperty(NhttpConstants.SENDING_FAULT, Boolean.TRUE);
+                        	mr.receive(nioFaultMessageContext);
+                    	}
                     } catch (AxisFault af) {
                         log.error("Unable to report back failure to the message receiver", af);
                     }



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org