diff options
author | Jeremy Allison <jra@samba.org> | 2010-03-31 17:40:30 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2010-03-31 17:40:30 -0700 |
commit | 6800fdbb81130b79c2e077e9a7fcbe2d5e0813cb (patch) | |
tree | d2fcafbd48c8e07b02765a0863e4de03fbf447d6 /source3/smbd/reply.c | |
parent | bb54089503907745a33a09cb27ead565d1205165 (diff) | |
download | samba-6800fdbb81130b79c2e077e9a7fcbe2d5e0813cb.tar.gz samba-6800fdbb81130b79c2e077e9a7fcbe2d5e0813cb.tar.bz2 samba-6800fdbb81130b79c2e077e9a7fcbe2d5e0813cb.zip |
Make smbd_lock_socket/smbd_unlock_socket recursive with a ref_count.
As these always call exit_server, make that part of the function.
Use _internal functions for the echo client.
Metze please check !
Jeremy.
Diffstat (limited to 'source3/smbd/reply.c')
-rw-r--r-- | source3/smbd/reply.c | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index c34e7f8b06..e2aca3793a 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -2895,22 +2895,15 @@ static void sendfile_short_send(files_struct *fsp, static void reply_readbraw_error(void) { - bool ok; char header[4]; SIVAL(header,0,0); - ok = smbd_lock_socket(smbd_server_conn); - if (!ok) { - exit_server_cleanly("failed to lock socket"); - } + smbd_lock_socket(smbd_server_conn); if (write_data(smbd_server_fd(),header,4) != 4) { fail_readraw(); } - ok = smbd_unlock_socket(smbd_server_conn); - if (!ok) { - exit_server_cleanly("failed to unlock socket"); - } + smbd_unlock_socket(smbd_server_conn); } /**************************************************************************** @@ -3462,10 +3455,6 @@ static void send_file_readX(connection_struct *conn, struct smb_request *req, goto nosendfile_read; } - if (smbd_server_conn->smb1.echo_handler.trusted_fde) { - goto nosendfile_read; - } - #if defined(WITH_SENDFILE) /* * We can only use sendfile on a non-chained packet @@ -3714,7 +3703,9 @@ void reply_read_and_X(struct smb_request *req) goto out; } + smbd_lock_socket(smbd_server_conn); send_file_readX(conn, req, fsp, startpos, smb_maxcnt); + smbd_unlock_socket(smbd_server_conn); out: END_PROFILE(SMBreadX); |