internal void Send(ServerMessageBlock request, ServerMessageBlock response)
{
lock (Transport())
{
if (response != null)
{
response.Received = false;
}
Expiration = Runtime.CurrentTimeMillis() + SmbConstants.SoTimeout;
SessionSetup(request, response);
if (response != null && response.Received)
{
return;
}
if (request is SmbComTreeConnectAndX)
{
SmbComTreeConnectAndX tcax = (SmbComTreeConnectAndX)request;
if (NetbiosName != null && tcax.path.EndsWith("\\IPC$"))
{
tcax.path = "\\\\" + NetbiosName + "\\IPC$";
}
}
request.Uid = Uid;
request.Auth = Auth;
try
{
transport.Send(request, response);
}
catch (SmbException se)
{
if (request is SmbComTreeConnectAndX)
{
Logoff(true);
}
request.Digest = null;
throw;
}
}
}