ntp: skip loop test if no server socket is open
If there is no socket that could receive a request from a client or peer, we know that nothing can be synchronized to us and no loop is possible.
This commit is contained in:
parent
7a88e0a87b
commit
004986310d
4 changed files with 14 additions and 2 deletions
|
@ -1474,9 +1474,9 @@ check_sync_loop(NCR_Instance inst, NTP_Packet *message, NTP_Local_Address *local
|
|||
NTP_Leap leap_status;
|
||||
uint32_t our_ref_id;
|
||||
|
||||
/* Check if our server may be enabled, i.e. a client or peer can actually
|
||||
/* Check if a server socket is open, i.e. a client or peer can actually
|
||||
be synchronised to us */
|
||||
if (REF_GetMode() != REF_ModeNormal)
|
||||
if (!NIO_IsServerSocketOpen())
|
||||
return 1;
|
||||
|
||||
/* Check if the source indicates that it is synchronised to our address
|
||||
|
|
8
ntp_io.c
8
ntp_io.c
|
@ -329,6 +329,14 @@ NIO_IsServerSocket(int sock_fd)
|
|||
|
||||
/* ================================================== */
|
||||
|
||||
int
|
||||
NIO_IsServerSocketOpen(void)
|
||||
{
|
||||
return server_sock_fd4 != INVALID_SOCK_FD || server_sock_fd6 != INVALID_SOCK_FD;
|
||||
}
|
||||
|
||||
/* ================================================== */
|
||||
|
||||
int
|
||||
NIO_IsServerConnectable(NTP_Remote_Address *remote_addr)
|
||||
{
|
||||
|
|
3
ntp_io.h
3
ntp_io.h
|
@ -53,6 +53,9 @@ extern void NIO_CloseServerSocket(int sock_fd);
|
|||
/* Function to check if socket is a server socket */
|
||||
extern int NIO_IsServerSocket(int sock_fd);
|
||||
|
||||
/* Function to check if a server socket is currently open */
|
||||
extern int NIO_IsServerSocketOpen(void);
|
||||
|
||||
/* Function to check if client packets can be sent to a server */
|
||||
extern int NIO_IsServerConnectable(NTP_Remote_Address *remote_addr);
|
||||
|
||||
|
|
|
@ -39,6 +39,7 @@ static int req_length, res_length;
|
|||
#define NIO_OpenClientSocket(addr) ((addr)->ip_addr.family != IPADDR_UNSPEC ? 101 : 0)
|
||||
#define NIO_CloseClientSocket(fd) assert(fd == 101)
|
||||
#define NIO_IsServerSocket(fd) (fd == 100)
|
||||
#define NIO_IsServerSocketOpen() 1
|
||||
#define NIO_SendPacket(msg, to, from, len, process_tx) (memcpy(&req_buffer, msg, len), req_length = len, 1)
|
||||
#define SCH_AddTimeoutByDelay(delay, handler, arg) (1 ? 102 : (handler(arg), 1))
|
||||
#define SCH_AddTimeoutInClass(delay, separation, randomness, class, handler, arg) \
|
||||
|
|
Loading…
Reference in a new issue