summaryrefslogtreecommitdiff
path: root/source4/smb_server
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2004-12-08 08:09:42 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:06:25 -0500
commit071439c1e1c5a7e6deb7866ff9716977e527e826 (patch)
treee09dce079b9b3f9f1b3cbe6ff0168810bac5689b /source4/smb_server
parent57314e0df30296291ef3b9698de44249fa1fc77e (diff)
downloadsamba-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)
Diffstat (limited to 'source4/smb_server')
-rw-r--r--source4/smb_server/negprot.c4
-rw-r--r--source4/smb_server/reply.c7
-rw-r--r--source4/smb_server/request.c2
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;