diff --git a/SMBLibrary/Server/SMBServer.SMB2.cs b/SMBLibrary/Server/SMBServer.SMB2.cs index fc8cd38..ab9bf88 100644 --- a/SMBLibrary/Server/SMBServer.SMB2.cs +++ b/SMBLibrary/Server/SMBServer.SMB2.cs @@ -47,8 +47,12 @@ namespace SMBLibrary.Server if (command is NegotiateRequest) { NegotiateRequest request = (NegotiateRequest)command; - state = new SMB2ConnectionState(state, AllocatePersistentFileID); - return NegotiateHelper.GetNegotiateResponse(request, state, m_serverGuid); + SMB2Command response = NegotiateHelper.GetNegotiateResponse(request, state, m_serverGuid); + if (state.ServerDialect != SMBDialect.NotSet) + { + state = new SMB2ConnectionState(state, AllocatePersistentFileID); + } + return response; } else { diff --git a/SMBLibrary/Server/SMBServer.cs b/SMBLibrary/Server/SMBServer.cs index d93f4ef..a7ff737 100644 --- a/SMBLibrary/Server/SMBServer.cs +++ b/SMBLibrary/Server/SMBServer.cs @@ -245,6 +245,10 @@ namespace SMBLibrary.Server if (smb2Dialects.Count > 0) { SMB2Command response = SMB2.NegotiateHelper.GetNegotiateResponse(smb2Dialects, state, m_serverGuid); + if (state.ServerDialect != SMBDialect.NotSet) + { + state = new SMB2ConnectionState(state, AllocatePersistentFileID); + } TrySendResponse(state, response); return; }