Fixed checking of closed channel before attempting to add credits

git-svn-id: https://hyracks.googlecode.com/svn/branches/hyracks_dev_next@1095 123451ca-8445-de46-9d55-352943316053
diff --git a/hyracks-net/src/main/java/edu/uci/ics/hyracks/net/protocols/muxdemux/ChannelControlBlock.java b/hyracks-net/src/main/java/edu/uci/ics/hyracks/net/protocols/muxdemux/ChannelControlBlock.java
index 7e11518..d6f3fd1 100644
--- a/hyracks-net/src/main/java/edu/uci/ics/hyracks/net/protocols/muxdemux/ChannelControlBlock.java
+++ b/hyracks-net/src/main/java/edu/uci/ics/hyracks/net/protocols/muxdemux/ChannelControlBlock.java
@@ -74,11 +74,11 @@
         private final IBufferAcceptor eba = new IBufferAcceptor() {
             @Override
             public void accept(ByteBuffer buffer) {
-                if (remoteClose.get()) {
-                    return;
-                }
                 int delta = buffer.remaining();
                 synchronized (ChannelControlBlock.this) {
+                    if (remoteClose.get()) {
+                        return;
+                    }
                     riEmptyStack.push(buffer);
                 }
                 cSet.addPendingCredits(channelId, delta);
@@ -305,6 +305,10 @@
         remoteClose.set(true);
     }
 
+    boolean getRemoteEOS() {
+        return remoteClose.get();
+    }
+
     synchronized void reportLocalEOSAck() {
         localCloseAck.set(true);
     }
diff --git a/hyracks-net/src/main/java/edu/uci/ics/hyracks/net/protocols/muxdemux/ChannelSet.java b/hyracks-net/src/main/java/edu/uci/ics/hyracks/net/protocols/muxdemux/ChannelSet.java
index c3f93d2..ffdb5c6 100644
--- a/hyracks-net/src/main/java/edu/uci/ics/hyracks/net/protocols/muxdemux/ChannelSet.java
+++ b/hyracks-net/src/main/java/edu/uci/ics/hyracks/net/protocols/muxdemux/ChannelSet.java
@@ -141,12 +141,17 @@
         }
         synchronized (mConn) {
             ChannelControlBlock ccb = ccbArray[channelId];
-            int oldCredits = ccb.getReadCredits();
-            ccb.setReadCredits(oldCredits + delta);
-            if (oldCredits == 0) {
-                assert !pendingChannelCreditsBitmap.get(channelId);
-                pendingChannelCreditsBitmap.set(channelId);
-                pendingWriteEventsCounter.increment();
+            if (ccb != null) {
+                if (ccb.getRemoteEOS()) {
+                    return;
+                }
+                int oldCredits = ccb.getReadCredits();
+                ccb.setReadCredits(oldCredits + delta);
+                if (oldCredits == 0) {
+                    assert !pendingChannelCreditsBitmap.get(channelId);
+                    pendingChannelCreditsBitmap.set(channelId);
+                    pendingWriteEventsCounter.increment();
+                }
             }
         }
     }