fix for BZ 42650
authorfhanik <fhanik@13f79535-47bb-0310-9956-ffa450edef68>
Wed, 13 Jun 2007 17:05:14 +0000 (17:05 +0000)
committerfhanik <fhanik@13f79535-47bb-0310-9956-ffa450edef68>
Wed, 13 Jun 2007 17:05:14 +0000 (17:05 +0000)
http://issues.apache.org/bugzilla/show_bug.cgi?id=42650

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@546958 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/tribes/transport/nio/PooledParallelSender.java

index dc168b8..1ec9e36 100644 (file)
@@ -44,12 +44,18 @@ public class PooledParallelSender extends PooledSender implements MultiPointSend
     public void sendMessage(Member[] destination, ChannelMessage message) throws ChannelException {
         if ( !connected ) throw new ChannelException("Sender not connected.");
         ParallelNioSender sender = (ParallelNioSender)getSender();
-        try {
-            sender.sendMessage(destination, message);
-            sender.keepalive();
-        }finally {
-            if ( !connected ) disconnect();
-            returnSender(sender);
+        if (sender == null) {
+            ChannelException cx = new ChannelException("Unable to retrieve a data sender, time out error.");
+            for (int i = 0; i < destination.length; i++) cx.addFaultyMember(destination[i], new NullPointerException("Unable to retrieve a sender from the sender pool"));
+            throw cx;
+        } else {
+            try {
+                sender.sendMessage(destination, message);
+                sender.keepalive();
+            } finally {
+                if (!connected) disconnect();
+                returnSender(sender);
+            }
         }
     }