diff --git a/src/udp.c b/src/udp.c index f18d23f0..6f84ba25 100644 --- a/src/udp.c +++ b/src/udp.c @@ -181,7 +181,12 @@ udp_bind ( const char *subsystem, const char *name, } /* Mark reuse address */ - setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse)); + if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse))) { + tvherror(subsystem, "%s - failed to reuse address for socket [%s]", + name, strerror(errno)); + udp_close(uc); + return UDP_FATAL_ERROR; + } /* Bind to interface */ ifindex = udp_ifindex_required(uc) ? udp_get_ifindex(ifname) : 0; @@ -260,7 +265,11 @@ udp_bind ( const char *subsystem, const char *name, } addrlen = sizeof(uc->ip); - getsockname(fd, (struct sockaddr *)&uc->ip, &addrlen); + if (getsockname(fd, (struct sockaddr *)&uc->ip, &addrlen)) { + tvherror(subsystem, "%s - cannot obtain socket name [%s]", + name, strerror(errno)); + goto error; + } /* Increase RX buffer size */ if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &rxsize, sizeof(rxsize)) == -1)