/* Read a message from the RSRR socket */ static void rsrr_read(int f, fd_set *rfd) { int rsrr_recvlen; bzero((char *) &client_addr, sizeof(client_addr)); rsrr_recvlen = recvfrom(rsrr_socket, rsrr_recv_buf, sizeof(rsrr_recv_buf), 0, (struct sockaddr *)&client_addr, &client_length); if (rsrr_recvlen < 0) { if (errno != EINTR) dolog(LOG_ERR, errno, "RSRR recvfrom"); return; } rsrr_accept(rsrr_recvlen); }
/* Read a message from the RSRR socket */ void rsrr_read(int f) { int rsrr_recvlen; sigset_t mask, omask; bzero((char *) &client_addr, sizeof(client_addr)); rsrr_recvlen = recvfrom(rsrr_socket, rsrr_recv_buf, sizeof(rsrr_recv_buf), 0, (struct sockaddr *)&client_addr, &client_length); if (rsrr_recvlen < 0) { if (errno != EINTR) logit(LOG_ERR, errno, "RSRR recvfrom"); return; } /* Use of omask taken from main() */ sigemptyset(&mask); sigaddset(&mask, SIGALRM); sigprocmask(SIG_BLOCK, &mask, &omask); rsrr_accept(rsrr_recvlen); sigprocmask(SIG_SETMASK, &omask, NULL); }