mirror of
https://github.com/samba-team/samba.git
synced 2025-02-23 09:57:40 +03:00
r15700: Make nmbd udp sockets non-blocking to prevent problem
with select returning true but no data being available. Fix for bug #3779. Jeremy.
This commit is contained in:
parent
7d766b5505
commit
e5787cf75b
@ -278,7 +278,12 @@ ssize_t read_udp_socket(int fd,char *buf,size_t len)
|
||||
memset((char *)&lastip,'\0',sizeof(lastip));
|
||||
ret = (ssize_t)sys_recvfrom(fd,buf,len,0,(struct sockaddr *)&sock,&socklen);
|
||||
if (ret <= 0) {
|
||||
DEBUG(2,("read socket failed. ERRNO=%s\n",strerror(errno)));
|
||||
/* Don't print a low debug error for a non-blocking socket. */
|
||||
if (errno == EAGAIN) {
|
||||
DEBUG(10,("read socket returned EAGAIN. ERRNO=%s\n",strerror(errno)));
|
||||
} else {
|
||||
DEBUG(2,("read socket failed. ERRNO=%s\n",strerror(errno)));
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
@ -605,6 +605,10 @@ static BOOL open_sockets(BOOL isdaemon, int port)
|
||||
set_socket_options( ClientNMB, "SO_BROADCAST" );
|
||||
set_socket_options( ClientDGRAM, "SO_BROADCAST" );
|
||||
|
||||
/* Ensure we're non-blocking. */
|
||||
set_blocking( ClientNMB, False);
|
||||
set_blocking( ClientDGRAM, False);
|
||||
|
||||
DEBUG( 3, ( "open_sockets: Broadcast sockets opened.\n" ) );
|
||||
return( True );
|
||||
}
|
||||
|
@ -23,8 +23,6 @@
|
||||
|
||||
#include "includes.h"
|
||||
|
||||
extern int ClientNMB;
|
||||
|
||||
int num_response_packets = 0;
|
||||
|
||||
/***************************************************************************
|
||||
|
@ -23,8 +23,6 @@
|
||||
|
||||
#include "includes.h"
|
||||
|
||||
extern int ClientNMB;
|
||||
|
||||
int updatecount = 0;
|
||||
|
||||
/*******************************************************************
|
||||
|
@ -26,8 +26,6 @@
|
||||
#include "includes.h"
|
||||
|
||||
extern struct in_addr loopback_ip;
|
||||
extern int ClientNMB;
|
||||
extern int ClientDGRAM;
|
||||
extern int global_nmb_port;
|
||||
|
||||
/* This is the broadcast subnets database. */
|
||||
@ -118,6 +116,10 @@ static struct subnet_record *make_subnet(const char *name, enum subnet_type type
|
||||
/* Make sure we can broadcast from these sockets. */
|
||||
set_socket_options(nmb_sock,"SO_BROADCAST");
|
||||
set_socket_options(dgram_sock,"SO_BROADCAST");
|
||||
|
||||
/* Set them non-blocking. */
|
||||
set_blocking(nmb_sock, False);
|
||||
set_blocking(dgram_sock, False);
|
||||
}
|
||||
|
||||
subrec = SMB_MALLOC_P(struct subnet_record);
|
||||
|
@ -23,8 +23,6 @@
|
||||
|
||||
#include "includes.h"
|
||||
|
||||
extern int ClientNMB;
|
||||
|
||||
extern uint16 samba_nb_type;
|
||||
|
||||
int workgroup_count = 0; /* unique index key: one for each workgroup */
|
||||
|
Loading…
x
Reference in New Issue
Block a user