diff --git a/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_device_tbl.c b/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_device_tbl.c index cb3814599d36..99d55ee3b2e6 100644 --- a/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_device_tbl.c +++ b/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_device_tbl.c @@ -449,7 +449,8 @@ devd_socket_callback(int fd, void *arg __unused) HRDBG("called"); - read_len = read(fd, buf, sizeof(buf) - 1); +again: + read_len = read(fd, buf, sizeof(buf)); if (read_len < 0) { if (errno == EBADF) { devd_sock = -1; @@ -476,16 +477,9 @@ devd_socket_callback(int fd, void *arg __unused) syslog(LOG_ERR, "Closing devd_fd, revert to devinfo polling"); } else { - switch (buf[0]) { - case '+': - case '-': - case '?': - case '!': - refresh_device_tbl(1); - return; - default: - syslog(LOG_ERR, "unknown message from devd socket"); - } + if (read_len == sizeof(buf)) + goto again; + refresh_device_tbl(1); } }