diff options
Diffstat (limited to 'source3/smbd/process.c')
-rw-r--r-- | source3/smbd/process.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/source3/smbd/process.c b/source3/smbd/process.c index 0647b99ba0..5cad8bfc9a 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -1448,6 +1448,14 @@ static void process_smb(struct smbd_server_connection *conn, goto done; } + if (smbd_server_conn->allow_smb2) { + if (smbd_is_smb2_header(inbuf, nread)) { + smbd_smb2_first_negprot(smbd_server_conn, inbuf, nread); + return; + } + smbd_server_conn->allow_smb2 = false; + } + show_msg((char *)inbuf); construct_reply((char *)inbuf,nread,unread_bytes,seqnum,encrypted,deferred_pcd); @@ -2009,6 +2017,10 @@ void smbd_process(void) exit_server("failed to create smbd_server_connection"); } + if (lp_maxprotocol() == PROTOCOL_SMB2) { + smbd_server_conn->allow_smb2 = true; + } + /* Ensure child is set to blocking mode */ set_blocking(smbd_server_fd(),True); |