From: Volker Lendecke Date: Tue, 19 Oct 2010 06:53:21 +0000 (+0200) Subject: s3: Cope with EINTR in smbd_[un]lock_socket X-Git-Url: http://git.samba.org/?p=obnox%2Fsamba-ctdb.git;a=commitdiff_plain;h=c4789521d5e724e45c5881f74d55daf7ac59eb40 s3: Cope with EINTR in smbd_[un]lock_socket --- diff --git a/source3/smbd/process.c b/source3/smbd/process.c index cf50417cff..16ed0f60b7 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -36,8 +36,12 @@ bool smbd_lock_socket(struct smbd_server_connection *sconn) DEBUG(10,("pid[%d] wait for socket lock\n", (int)sys_getpid())); - ok = fcntl_lock(smbd_server_conn->smb1.echo_handler.socket_lock_fd, + do { + ok = fcntl_lock( + smbd_server_conn->smb1.echo_handler.socket_lock_fd, SMB_F_SETLKW, 0, 0, F_WRLCK); + } while (!ok && (errno == EINTR)); + if (!ok) { return false; } @@ -55,8 +59,12 @@ bool smbd_unlock_socket(struct smbd_server_connection *sconn) return true; } - ok = fcntl_lock(smbd_server_conn->smb1.echo_handler.socket_lock_fd, + do { + ok = fcntl_lock( + smbd_server_conn->smb1.echo_handler.socket_lock_fd, SMB_F_SETLKW, 0, 0, F_UNLCK); + } while (!ok && (errno == EINTR)); + if (!ok) { return false; }