- }
- if (!os_set_reuseaddr(fd)) {
- log_write(LS_SOCKET, L_ERROR, 0,
- "UPING: set reuseaddr on UDP listener failed: %m (fd %d)", fd);
- Debug((DEBUG_ERROR, "UPING: set reuseaddr on UDP listener failed: %s",
- (strerror(errno)) ? strerror(errno) : "Unknown error"));
- close(fd);
- return -1;
- }
- if (bind(fd, (struct sockaddr*) &from, sizeof(from)) == -1) {
- log_write(LS_SOCKET, L_ERROR, 0,
- "UPING: bind on UDP listener (%d fd %d) failed: %m",
- htons(from.sin_port), fd);
- Debug((DEBUG_ERROR, "UPING: bind on UDP listener failed : %s",
- (strerror(errno)) ? strerror(errno) : "Unknown error"));
+ if (!socket_add(&upingSock_v4, uping_echo_callback, 0, SS_DATAGRAM,
+ SOCK_EVENT_READABLE, fd)) {
+ Debug((DEBUG_ERROR, "UPING: Unable to queue fd to event system"));