diff options
author | Andrew Tridgell <tridge@samba.org> | 2004-12-08 08:09:42 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:06:25 -0500 |
commit | 071439c1e1c5a7e6deb7866ff9716977e527e826 (patch) | |
tree | e09dce079b9b3f9f1b3cbe6ff0168810bac5689b | |
parent | 57314e0df30296291ef3b9698de44249fa1fc77e (diff) | |
download | samba-071439c1e1c5a7e6deb7866ff9716977e527e826.tar.gz samba-071439c1e1c5a7e6deb7866ff9716977e527e826.tar.bz2 samba-071439c1e1c5a7e6deb7866ff9716977e527e826.zip |
r4095: smbsrv_terminate_connection() doesn't exit() in single processor mode, so after we
call it we need to return, and not continue processing packets
(This used to be commit 33e4cee17dbfbb79e5ae68fda893a4d313865eb5)
-rw-r--r-- | source4/smb_server/negprot.c | 4 | ||||
-rw-r--r-- | source4/smb_server/reply.c | 7 | ||||
-rw-r--r-- | source4/smb_server/request.c | 2 |
3 files changed, 11 insertions, 2 deletions
diff --git a/source4/smb_server/negprot.c b/source4/smb_server/negprot.c index 1c2e1ff7f8..e903969aa7 100644 --- a/source4/smb_server/negprot.c +++ b/source4/smb_server/negprot.c @@ -63,6 +63,7 @@ static void reply_corep(struct smbsrv_request *req, uint16_t choice) if (req->smb_conn->signing.mandatory_signing) { smbsrv_terminate_connection(req->smb_conn, "CORE does not support SMB signing, and it is mandetory\n"); + return; } req_send_reply(req); @@ -95,6 +96,7 @@ static void reply_coreplus(struct smbsrv_request *req, uint16_t choice) if (req->smb_conn->signing.mandatory_signing) { smbsrv_terminate_connection(req->smb_conn, "COREPLUS does not support SMB signing, and it is mandetory\n"); + return; } req_send_reply(req); @@ -145,6 +147,7 @@ static void reply_lanman1(struct smbsrv_request *req, uint16_t choice) if (req->smb_conn->signing.mandatory_signing) { smbsrv_terminate_connection(req->smb_conn, "LANMAN1 does not support SMB signing, and it is mandetory\n"); + return; } req_send_reply(req); @@ -193,6 +196,7 @@ static void reply_lanman2(struct smbsrv_request *req, uint16_t choice) if (req->smb_conn->signing.mandatory_signing) { smbsrv_terminate_connection(req->smb_conn, "LANMAN2 does not support SMB signing, and it is mandetory\n"); + return; } req_send_reply(req); diff --git a/source4/smb_server/reply.c b/source4/smb_server/reply.c index d81b2bfeef..708dae05ff 100644 --- a/source4/smb_server/reply.c +++ b/source4/smb_server/reply.c @@ -2378,14 +2378,17 @@ void reply_special(struct smbsrv_request *req) switch (msg_type) { case 0x81: /* session request */ if (req->smb_conn->negotiate.done_nbt_session) { - smbsrv_terminate_connection(req->smb_conn, "multiple session request not permitted"); + smbsrv_terminate_connection(req->smb_conn, + "multiple session request not permitted"); + return; } SCVAL(buf,0,0x82); SCVAL(buf,3,0); DEBUG(0,("REWRITE: not parsing netbios names in NBT session request!\n")); - /* TODO: store the name for the session setup 'remote machine' code, as well as smbstatus */ + /* TODO: store the name for the session setup 'remote + machine' code, as well as smbstatus */ req->smb_conn->negotiate.done_nbt_session = True; diff --git a/source4/smb_server/request.c b/source4/smb_server/request.c index 4e63acdd92..7f13998605 100644 --- a/source4/smb_server/request.c +++ b/source4/smb_server/request.c @@ -86,6 +86,7 @@ static void req_setup_chain_reply(struct smbsrv_request *req, uint_t wct, uint_t req->out.buffer = talloc_realloc(req, req->out.buffer, req->out.allocated); if (!req->out.buffer) { smbsrv_terminate_connection(req->smb_conn, "allocation failed"); + return; } req->out.hdr = req->out.buffer + NBT_HDR_SIZE; @@ -120,6 +121,7 @@ void req_setup_reply(struct smbsrv_request *req, uint_t wct, uint_t buflen) req->out.buffer = talloc(req, req->out.allocated); if (!req->out.buffer) { smbsrv_terminate_connection(req->smb_conn, "allocation failed"); + return; } req->out.hdr = req->out.buffer + NBT_HDR_SIZE; |