Browse Source

Code refactoring

Tal Aloni 8 years ago
parent
commit
f886ea5fc3

+ 13 - 0
ISCSI/ISCSI.Server/ConnectionManager.cs

@@ -7,6 +7,7 @@
 using System;
 using System.Collections.Generic;
 using System.Text;
+using Utilities;
 
 namespace ISCSI.Server
 {
@@ -41,6 +42,18 @@ namespace ISCSI.Server
             }
         }
 
+        public void ReleaseConnection(ConnectionState connection)
+        {
+            // Wait for pending I/O to complete.
+            connection.RunningSCSICommands.WaitUntilZero();
+            connection.SendQueue.Stop();
+            SocketUtils.ReleaseSocket(connection.ClientSocket);
+            if (connection.Session != null)
+            {
+                RemoveConnection(connection);
+            }
+        }
+
         public ConnectionState FindConnection(ConnectionState connection)
         {
             return FindConnection(connection.Session.ISID, connection.Session.TSIH, connection.ConnectionParameters.CID);

+ 1 - 5
ISCSI/ISCSI.Server/ISCSIServer.PDUProcessor.cs

@@ -71,11 +71,7 @@ namespace ISCSI.Server
                         {
                             // Perform implicit logout
                             Log(Severity.Verbose, "[{0}] Initiating implicit logout", state.ConnectionIdentifier);
-                            // Wait for pending I/O to complete.
-                            existingConnection.RunningSCSICommands.WaitUntilZero();
-                            SocketUtils.ReleaseSocket(existingConnection.ClientSocket);
-                            existingConnection.SendQueue.Stop();
-                            m_connectionManager.RemoveConnection(existingConnection);
+                            m_connectionManager.ReleaseConnection(existingConnection);
                             Log(Severity.Verbose, "[{0}] Implicit logout completed", state.ConnectionIdentifier);
                         }
                     }

+ 1 - 8
ISCSI/ISCSI.Server/ISCSIServer.cs

@@ -182,15 +182,8 @@ namespace ISCSI.Server
             if (numberOfBytesReceived == 0)
             {
                 // The other side has closed the connection
-                clientSocket.Close();
                 Log(Severity.Verbose, "The initiator has closed the connection");
-                // Wait for pending I/O to complete.
-                state.RunningSCSICommands.WaitUntilZero();
-                state.SendQueue.Stop();
-                if (state.Session != null)
-                {
-                    m_connectionManager.RemoveConnection(state);
-                }
+                m_connectionManager.ReleaseConnection(state);
                 return;
             }