Fixed sendto in oplock code.
authorJeremy Allison <jra@samba.org>
Fri, 19 Apr 2002 02:20:04 +0000 (02:20 +0000)
committerJeremy Allison <jra@samba.org>
Fri, 19 Apr 2002 02:20:04 +0000 (02:20 +0000)
Jeremy.

source/lib/system.c
source/smbd/oplock.c

index 61f93dd6a5b0423aac780bb0523f03a8f402bf50..7734328795c6bd08ed506be0e885b95c7b25775f 100644 (file)
@@ -117,6 +117,21 @@ ssize_t sys_send(int s, const void *msg, size_t len, int flags)
        return ret;
 }
 
+/*******************************************************************
+A sendto wrapper that will deal with EINTR.
+********************************************************************/
+
+ssize_t sys_sendto(int s,  const void *msg, size_t len, int flags, const struct sockaddr *to, socklen_t tolen)
+{
+       ssize_t ret;
+
+       do {
+               errno = 0;
+               ret = sendto(s, msg, len, flags, to, tolen);
+       } while (ret == -1 && errno == EINTR);
+       return ret;
+}
+
 /*******************************************************************
 A recvfrom wrapper that will deal with EINTR.
 ********************************************************************/
index 2f74c4cd8c932e4d33999f88e5c672c2dcd7f77b..9469c05ec66cea2a6a7bd0d2b2ba07c23b4b15c6 100644 (file)
@@ -417,7 +417,7 @@ oplocks. Returning success.\n"));
                toaddr.sin_port = htons(from_port);
                toaddr.sin_family = AF_INET;
 
-               if(sendto( oplock_sock, msg_start, OPLOCK_BREAK_MSG_LEN, 0,
+               if(sys_sendto( oplock_sock, msg_start, OPLOCK_BREAK_MSG_LEN, 0,
                                (struct sockaddr *)&toaddr, sizeof(toaddr)) < 0) {
                        DEBUG(0,("process_local_message: sendto process %d failed. Errno was %s\n",
                                (int)remotepid, strerror(errno)));
@@ -930,7 +930,7 @@ dev = %x, inode = %.0f, file_id = %lu and no fsp found !\n",
             (unsigned int)dev, (double)inode, file_id );
        }
 
-       if(sendto(oplock_sock,op_break_msg,OPLOCK_BREAK_MSG_LEN,0,
+       if(sys_sendto(oplock_sock,op_break_msg,OPLOCK_BREAK_MSG_LEN,0,
                        (struct sockaddr *)&addr_out,sizeof(addr_out)) < 0) {
                if( DEBUGLVL( 0 ) ) {
                        dbgtext( "request_oplock_break: failed when sending a oplock " );