rendered paste bodypublic void ListenSockThreadProc()
{
byte[] buf;
int bytes;
StructSession structSes = serverSessions.sesList[forward.session] as StructSession;
if ( (structSes == null) || (structSes.SesSocket == null) )
return;
while (structSes.SesSocket.Connected)
{
try
{
bytes = Common.ReceiveBuffer(structSes.SesSocket, out buf);
totalBytesReceivedFromServer += bytes;
TunnelClient.totalBytesReceivedFromServer += bytes;
}
catch (ThreadAbortException)
{
Common.Log("Socket server thread was successfully shutdowned. " + structSes.SesForward.ip + ":" +
structSes.SesForward.port + " " + structSes.SesForward.proto + ". Session \"" +
structSes.SesForward.session + "\"." + Common.CRLF, Common.LogType.Event);
break;
}
catch (Exception e)
{
buf = new byte[0];
bytes = 0;
Common.Log("Could not receive data from remote server " + structSes.SesForward.ip + ":" +
structSes.SesForward.port + " " + structSes.SesForward.proto + ". Session \"" +
structSes.SesForward.session + "\". " + e.Message + Common.CRLF, Common.LogType.Error);
}
if (Common.debugMode)
{
if ( (structSes.SesSocket != null) && (structSes.SesSocket.Connected) )
Common.Log("=Receive from server============" +
structSes.SesSocket.LocalEndPoint.ToString() + " " + structSes.SesSocket.RemoteEndPoint.ToString() + " " +
structSes.SesSocket.ProtocolType.ToString() + Common.CRLF, Common.LogType.Event);
else
Common.Log("=Receive from server============" + Common.CRLF, Common.LogType.Event);
Common.Log(enc.GetString(buf, 0, bytes) + Common.CRLF, Common.LogType.Raw);
}
lock (serverSessions.sesList)
{
if (bytes <= 0)
{
Common.Log("Connection with server closed (receive 0 bytes)" + Common.CRLF, Common.LogType.Event);
structSes.SocketState = SesSockState.Closed;
if (structSes.SesSocket.Connected)
structSes.SesSocket.Close();
break;
}
else
structSes.SesStream.Write(buf, 0, buf.Length);
}
if (!forward.ping)
{
int pingCount = 0;
SendDataToClient(structSes, ref pingCount, clnSck);
}
}
Common.Log("Total: " +
totalBytesReceivedFromClient + " " +
totalBytesReceivedFromServer + " " +
totalBytesSendedToClient + " " +
totalBytesSendedToServer + Common.CRLF, Common.LogType.Event);
}
}