diff options
author | Andrew Tridgell <tridge@samba.org> | 1996-06-10 05:16:19 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 1996-06-10 05:16:19 +0000 |
commit | a521fe8a274c8a043cf77641dd4160fdef803533 (patch) | |
tree | 67bbb5bb827896e10f7e611d02a8e5710a9045fe /source3/smbd/ipc.c | |
parent | 7e3b4a1c0df1434eb3d02f93c736ce065f9898d8 (diff) | |
download | samba-a521fe8a274c8a043cf77641dd4160fdef803533.tar.gz samba-a521fe8a274c8a043cf77641dd4160fdef803533.tar.bz2 samba-a521fe8a274c8a043cf77641dd4160fdef803533.zip |
a cleanup of the receive_smb() usage, adding timeouts in some places
also added paranoid code in the main process() loop of smbd to detect
when smbd is looping uselessly. This should stop the "smbd is chewing
lots of cpu" reports
(This used to be commit 8e9dce34d50d673cb50531f0c4c7672ce2522cef)
Diffstat (limited to 'source3/smbd/ipc.c')
-rw-r--r-- | source3/smbd/ipc.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/source3/smbd/ipc.c b/source3/smbd/ipc.c index 594e067ddd..415c939bf3 100644 --- a/source3/smbd/ipc.c +++ b/source3/smbd/ipc.c @@ -2790,12 +2790,9 @@ int reply_trans(char *inbuf,char *outbuf) while (pscnt < tpscnt || dscnt < tdscnt) { int pcnt,poff,dcnt,doff,pdisp,ddisp; - - receive_smb(Client,inbuf, 0); - show_msg(inbuf); - - /* Ensure this is still a trans packet (sanity check) */ - if(CVAL(inbuf, smb_com) != SMBtrans) + + if (!receive_smb(Client,inbuf, SMB_SECONDARY_WAIT*1000) || + CVAL(inbuf, smb_com) != SMBtrans) { DEBUG(2,("Invalid secondary trans2 packet\n")); if (params) free(params); @@ -2803,6 +2800,8 @@ int reply_trans(char *inbuf,char *outbuf) if (setup) free(setup); return(ERROR(ERRSRV,ERRerror)); } + + show_msg(inbuf); tpscnt = SVAL(inbuf,smb_vwv0); tdscnt = SVAL(inbuf,smb_vwv1); |