summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>1998-03-31 20:55:14 +0000
committerJeremy Allison <jra@samba.org>1998-03-31 20:55:14 +0000
commit10fe54befa10b283269001fdf779b9938c9a3a2c (patch)
treee607595022ff7dd77ab3609097a09dff045aaa86 /source3/smbd
parent5efec4e1b3300bd8f1792d1aaf1e758032a8d4fc (diff)
downloadsamba-10fe54befa10b283269001fdf779b9938c9a3a2c.tar.gz
samba-10fe54befa10b283269001fdf779b9938c9a3a2c.tar.bz2
samba-10fe54befa10b283269001fdf779b9938c9a3a2c.zip
includes.h: Added semaphore fix for HPUX10.x
server.c trans2.c: Added oplock deadlock bug fix. lib/rpc/server/srv_netlog.c: Made code that changes machine account password the default. Jeremy. (This used to be commit 3b56fbc11e9d1cb7d4930d9782238c2610cac30d)
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/server.c2
-rw-r--r--source3/smbd/trans2.c14
2 files changed, 15 insertions, 1 deletions
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index ca4326f14e..8166021fc2 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -4446,7 +4446,7 @@ struct smb_message_struct
/* LANMAN2.0 PROTOCOL FOLLOWS */
{SMBfindnclose, "SMBfindnclose", reply_findnclose, AS_USER},
{SMBfindclose, "SMBfindclose", reply_findclose,AS_USER},
- {SMBtrans2, "SMBtrans2", reply_trans2, AS_USER | QUEUE_IN_OPLOCK },
+ {SMBtrans2, "SMBtrans2", reply_trans2, AS_USER },
{SMBtranss2, "SMBtranss2", reply_transs2, AS_USER},
/* messaging routines */
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index 165df56af5..75cf18785c 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -33,6 +33,7 @@ extern int Client;
extern int oplock_sock;
extern int smb_read_error;
extern fstring local_machine;
+extern int global_oplock_break;
/****************************************************************************
Send the required number of replies back.
@@ -1743,6 +1744,19 @@ int reply_trans2(char *inbuf,char *outbuf,int length,int bufsize)
char *params = NULL, *data = NULL;
int num_params, num_params_sofar, num_data, num_data_sofar;
+ if(global_oplock_break && (tran_call == TRANSACT2_OPEN))
+ {
+ /*
+ * Queue this open message as we are the process of an oplock break.
+ */
+
+ DEBUG(2,("%s: reply_trans2: queueing message trans2open due to being in oplock break state.\n",
+ timestring() ));
+
+ push_smb_message( inbuf, length);
+ return -1;
+ }
+
outsize = set_message(outbuf,0,0,True);
/* All trans2 messages we handle have smb_sucnt == 1 - ensure this