diff -r 13502d0dda65 -r 02653162b03b thermferm/slcd.c --- a/thermferm/slcd.c Sat Nov 14 23:40:51 2015 +0100 +++ b/thermferm/slcd.c Sun Nov 15 21:12:11 2015 +0100 @@ -60,14 +60,18 @@ return; if (sendto(sock, &data, sizeof(uint16_t), 0, (struct sockaddr *)&sendaddr, sizeof(sendaddr)) != sizeof(uint16_t)) { - syslog(LOG_NOTICE, "Socket send failed, closing socket: %s", strerror(errno)); + syslog(LOG_NOTICE, "Socket %d send failed, closing socket: %s", sock, strerror(errno)); if (shutdown(sock, SHUT_RDWR)) { syslog(LOG_NOTICE, "Can't shutdown socket: %s", strerror(errno)); } sock = -1; } else { if (recvfrom(sock, &rdat, sizeof(uint16_t), 0, (struct sockaddr *) &sendaddr, &slen) != sizeof(uint16_t)) { - syslog(LOG_NOTICE, "Socket recvfrom failed, closing socket: %s", strerror(errno)); + syslog(LOG_NOTICE, "Socket %d recvfrom failed, closing socket: %s", sock, strerror(errno)); + if (shutdown(sock, SHUT_RDWR)) { + syslog(LOG_NOTICE, "Can't shutdown socket: %s", strerror(errno)); + } + sock = -1; } else { if ((rdat & SLCD_MKEYS) == SLCD_KEYS) { if (((rdat & 0x00ff) != keys) && debug)