Prechádzať zdrojové kódy

Improved ReceiveCallback logic

Tal Aloni 8 rokov pred
rodič
commit
40deabc6c2
1 zmenil súbory, kde vykonal 14 pridanie a 13 odobranie
  1. 14 13
      ISCSI/Server/ISCSIServer.cs

+ 14 - 13
ISCSI/Server/ISCSIServer.cs

@@ -149,6 +149,10 @@ namespace ISCSI.Server
 
             StateObject state = (StateObject)result.AsyncState;
             Socket clientSocket = state.ClientSocket;
+            if (!clientSocket.Connected)
+            {
+                return;
+            }
 
             int numberOfBytesReceived;
             try
@@ -192,20 +196,17 @@ namespace ISCSI.Server
             byte[] currentBuffer = ByteReader.ReadBytes(state.ReceiveBuffer, 0, numberOfBytesReceived);
             ProcessCurrentBuffer(currentBuffer, state);
 
-            if (clientSocket.Connected)
+            try
             {
-                try
-                {
-                    clientSocket.BeginReceive(state.ReceiveBuffer, 0, StateObject.ReceiveBufferSize, 0, ReceiveCallback, state);
-                }
-                catch (ObjectDisposedException)
-                {
-                    Log("[ReceiveCallback] BeginReceive ObjectDisposedException");
-                }
-                catch (SocketException ex)
-                {
-                    Log("[ReceiveCallback] BeginReceive SocketException: " + ex.Message);
-                }
+                clientSocket.BeginReceive(state.ReceiveBuffer, 0, StateObject.ReceiveBufferSize, 0, ReceiveCallback, state);
+            }
+            catch (ObjectDisposedException)
+            {
+                Log("[ReceiveCallback] BeginReceive ObjectDisposedException");
+            }
+            catch (SocketException ex)
+            {
+                Log("[ReceiveCallback] BeginReceive SocketException: " + ex.Message);
             }
         }