From 69588937ba5cc22e39d4a3bbf9197dbc89ac1f60 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Wed, 31 Aug 2011 15:06:35 +0200 Subject: [PATCH] s3: Do not fork the echo handler for smb2 If a smb1 negprot negotiated smb2 we forked the echo responder. This will eventually lead to a panic from [2011/08/30 10:33:29.212578, 0, pid=3846917] smbd/smb2_server.c:243(smbd_smb2_request_create) Invalid SMB packet: first request: 0x0009 because from the echo responder we always read using the normal smb1 protocol handling routine. If that is a bit down the smb2 stream, we get a non-negprot packet and panic. BTW, the echo responder is not required for smb2 anyway, Microsoft confirmed that it probes the server liveness using TCP keepalives and not smb2 echo requests. --- source3/smbd/negprot.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/source3/smbd/negprot.c b/source3/smbd/negprot.c index a587442..236b4d6 100644 --- a/source3/smbd/negprot.c +++ b/source3/smbd/negprot.c @@ -743,7 +743,8 @@ void reply_negprot(struct smb_request *req) TALLOC_FREE(cliprotos); - if (lp_async_smb_echo_handler() && !fork_echo_handler(sconn)) { + if (lp_async_smb_echo_handler() && (get_Protocol() < PROTOCOL_SMB2) && + !fork_echo_handler(sconn)) { exit_server("Failed to fork echo handler"); } -- 1.7.0.4