From: Donald Sharp Date: Fri, 18 Nov 2016 19:11:31 +0000 (-0500) Subject: pimd: Only make the pim sockets non blocking. X-Git-Tag: frr-3.0-branchpoint~64^2~10^2~71 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=18e565fd96f69d7dd445d1c5c07dd7a0dfafd6f9;p=matthieu%2Ffrr.git pimd: Only make the pim sockets non blocking. Only make the pim sockets non-blocking on reads. Signed-off-by: Donald Sharp --- diff --git a/pimd/pim_sock.c b/pimd/pim_sock.c index 12f222bb80..6ce336d605 100644 --- a/pimd/pim_sock.c +++ b/pimd/pim_sock.c @@ -230,24 +230,25 @@ int pim_socket_mcast(int protocol, struct in_addr ifaddr, int ifindex, u_char lo zlog_warn("%s: Failure to set buffer size to %d", __PRETTY_FUNCTION__, rcvbuf); - { - long flags; - - flags = fcntl(fd, F_GETFL, 0); - if (flags < 0) { - zlog_warn("Could not get fcntl(F_GETFL,O_NONBLOCK) on socket fd=%d: errno=%d: %s", - fd, errno, safe_strerror(errno)); - close(fd); - return PIM_SOCK_ERR_NONBLOCK_GETFL; - } + if (protocol == IPPROTO_PIM) + { + long flags; + + flags = fcntl(fd, F_GETFL, 0); + if (flags < 0) { + zlog_warn("Could not get fcntl(F_GETFL,O_NONBLOCK) on socket fd=%d: errno=%d: %s", + fd, errno, safe_strerror(errno)); + close(fd); + return PIM_SOCK_ERR_NONBLOCK_GETFL; + } - if (fcntl(fd, F_SETFL, flags | O_NONBLOCK)) { - zlog_warn("Could not set fcntl(F_SETFL,O_NONBLOCK) on socket fd=%d: errno=%d: %s", - fd, errno, safe_strerror(errno)); - close(fd); - return PIM_SOCK_ERR_NONBLOCK_SETFL; + if (fcntl(fd, F_SETFL, flags | O_NONBLOCK)) { + zlog_warn("Could not set fcntl(F_SETFL,O_NONBLOCK) on socket fd=%d: errno=%d: %s", + fd, errno, safe_strerror(errno)); + close(fd); + return PIM_SOCK_ERR_NONBLOCK_SETFL; + } } - } return fd; }