58 |
58 |
59 if (sock == -1) |
59 if (sock == -1) |
60 return; |
60 return; |
61 |
61 |
62 if (sendto(sock, &data, sizeof(uint16_t), 0, (struct sockaddr *)&sendaddr, sizeof(sendaddr)) != sizeof(uint16_t)) { |
62 if (sendto(sock, &data, sizeof(uint16_t), 0, (struct sockaddr *)&sendaddr, sizeof(sendaddr)) != sizeof(uint16_t)) { |
63 syslog(LOG_NOTICE, "Socket send failed, closing socket: %s", strerror(errno)); |
63 syslog(LOG_NOTICE, "Socket %d send failed, closing socket: %s", sock, strerror(errno)); |
64 if (shutdown(sock, SHUT_RDWR)) { |
64 if (shutdown(sock, SHUT_RDWR)) { |
65 syslog(LOG_NOTICE, "Can't shutdown socket: %s", strerror(errno)); |
65 syslog(LOG_NOTICE, "Can't shutdown socket: %s", strerror(errno)); |
66 } |
66 } |
67 sock = -1; |
67 sock = -1; |
68 } else { |
68 } else { |
69 if (recvfrom(sock, &rdat, sizeof(uint16_t), 0, (struct sockaddr *) &sendaddr, &slen) != sizeof(uint16_t)) { |
69 if (recvfrom(sock, &rdat, sizeof(uint16_t), 0, (struct sockaddr *) &sendaddr, &slen) != sizeof(uint16_t)) { |
70 syslog(LOG_NOTICE, "Socket recvfrom failed, closing socket: %s", strerror(errno)); |
70 syslog(LOG_NOTICE, "Socket %d recvfrom failed, closing socket: %s", sock, strerror(errno)); |
|
71 if (shutdown(sock, SHUT_RDWR)) { |
|
72 syslog(LOG_NOTICE, "Can't shutdown socket: %s", strerror(errno)); |
|
73 } |
|
74 sock = -1; |
71 } else { |
75 } else { |
72 if ((rdat & SLCD_MKEYS) == SLCD_KEYS) { |
76 if ((rdat & SLCD_MKEYS) == SLCD_KEYS) { |
73 if (((rdat & 0x00ff) != keys) && debug) |
77 if (((rdat & 0x00ff) != keys) && debug) |
74 fprintf(stdout, "received keys %04x was %04x\n", rdat & 0x00ff, keys); |
78 fprintf(stdout, "received keys %04x was %04x\n", rdat & 0x00ff, keys); |
75 keys = rdat & 0x00ff; |
79 keys = rdat & 0x00ff; |