From bb8e6d458a55510605da8768a302a81d2c2ce457 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 12 Jun 2014 08:43:26 +0200 Subject: [PATCH] s3:smbd: pass smbXsrv_connection to smbd_[un]lock_socket() Signed-off-by: Stefan Metzmacher Reviewed-by: Volker Lendecke Reviewed-by: Michael Adam Autobuild-User(master): Michael Adam Autobuild-Date(master): Wed Aug 6 12:15:57 CEST 2014 on sn-devel-104 --- source3/smbd/globals.h | 4 ++-- source3/smbd/process.c | 22 +++++++++------------- source3/smbd/reply.c | 9 ++++----- 3 files changed, 15 insertions(+), 20 deletions(-) diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h index 079976eefb5..f78ce458276 100644 --- a/source3/smbd/globals.h +++ b/source3/smbd/globals.h @@ -113,8 +113,8 @@ struct smbd_smb2_request; DATA_BLOB negprot_spnego(TALLOC_CTX *ctx, struct smbXsrv_connection *xconn); -void smbd_lock_socket(struct smbd_server_connection *sconn); -void smbd_unlock_socket(struct smbd_server_connection *sconn); +void smbd_lock_socket(struct smbXsrv_connection *xconn); +void smbd_unlock_socket(struct smbXsrv_connection *xconn); NTSTATUS smbd_do_locking(struct smb_request *req, files_struct *fsp, diff --git a/source3/smbd/process.c b/source3/smbd/process.c index 780a67aee59..7148462d716 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -140,10 +140,8 @@ static bool smbd_lock_socket_internal(struct smbXsrv_connection *xconn) return true; } -void smbd_lock_socket(struct smbd_server_connection *sconn) +void smbd_lock_socket(struct smbXsrv_connection *xconn) { - struct smbXsrv_connection *xconn = sconn->conn; - if (!smbd_lock_socket_internal(xconn)) { exit_server_cleanly("failed to lock socket"); } @@ -200,10 +198,8 @@ static bool smbd_unlock_socket_internal(struct smbXsrv_connection *xconn) return true; } -void smbd_unlock_socket(struct smbd_server_connection *sconn) +void smbd_unlock_socket(struct smbXsrv_connection *xconn) { - struct smbXsrv_connection *xconn = sconn->conn; - if (!smbd_unlock_socket_internal(xconn)) { exit_server_cleanly("failed to unlock socket"); } @@ -232,7 +228,7 @@ bool srv_send_smb(struct smbd_server_connection *sconn, char *buffer, return true; } - smbd_lock_socket(sconn); + smbd_lock_socket(xconn); if (do_signing) { /* Sign the outgoing packet if required. */ @@ -274,7 +270,7 @@ bool srv_send_smb(struct smbd_server_connection *sconn, char *buffer, out: SMB_PERFCOUNT_END(pcd); - smbd_unlock_socket(sconn); + smbd_unlock_socket(xconn); return (ret > 0); } @@ -2477,11 +2473,11 @@ static void smbd_server_connection_read_handler( from_client = (xconn->transport.sock == fd); if (async_echo && from_client) { - smbd_lock_socket(sconn); + smbd_lock_socket(xconn); if (!fd_is_readable(fd)) { DEBUG(10,("the echo listener was faster\n")); - smbd_unlock_socket(sconn); + smbd_unlock_socket(xconn); return; } } @@ -2496,7 +2492,7 @@ static void smbd_server_connection_read_handler( !from_client /* trusted channel */); if (async_echo && from_client) { - smbd_unlock_socket(sconn); + smbd_unlock_socket(xconn); } if (NT_STATUS_EQUAL(status, NT_STATUS_RETRY)) { @@ -2726,9 +2722,9 @@ static bool keepalive_fn(const struct timeval *now, void *private_data) return false; } - smbd_lock_socket(sconn); + smbd_lock_socket(xconn); ret = send_keepalive(xconn->transport.sock); - smbd_unlock_socket(sconn); + smbd_unlock_socket(xconn); if (!ret) { int saved_errno = errno; diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index a92e3a7ad23..6c664149b18 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -3166,12 +3166,11 @@ ssize_t sendfile_short_send(struct smbXsrv_connection *xconn, static void reply_readbraw_error(struct smbXsrv_connection *xconn) { - struct smbd_server_connection *sconn = xconn->sconn; char header[4]; SIVAL(header,0,0); - smbd_lock_socket(sconn); + smbd_lock_socket(xconn); if (write_data(xconn->transport.sock,header,4) != 4) { int saved_errno = errno; /* @@ -3186,7 +3185,7 @@ static void reply_readbraw_error(struct smbXsrv_connection *xconn) fail_readraw(); } - smbd_unlock_socket(sconn); + smbd_unlock_socket(xconn); } /**************************************************************************** @@ -4073,9 +4072,9 @@ void reply_read_and_X(struct smb_request *req) /* NT_STATUS_RETRY - fall back to sync read. */ } - smbd_lock_socket(req->sconn); + smbd_lock_socket(req->xconn); send_file_readX(conn, req, fsp, startpos, smb_maxcnt); - smbd_unlock_socket(req->sconn); + smbd_unlock_socket(req->xconn); out: END_PROFILE(SMBreadX); -- 2.34.1