diff -up cups-1.5.2/backend/runloop.c.waitloop-snmp cups-1.5.2/backend/runloop.c --- cups-1.5.2/backend/runloop.c.waitloop-snmp 2012-03-09 11:42:45.907055236 +0000 +++ cups-1.5.2/backend/runloop.c 2012-03-09 11:44:53.106166733 +0000 @@ -437,6 +437,7 @@ backendWaitLoop( fd_set input; /* Input set for reading */ time_t curtime, /* Current time */ snmp_update = 0; /* Last SNMP status update */ + struct timeval timeout; fprintf(stderr, "DEBUG: backendWaitLoop(snmp_fd=%d, addr=%p, side_cb=%p)\n", @@ -457,7 +458,9 @@ backendWaitLoop( if (side_cb) FD_SET(CUPS_SC_FD, &input); - if (select(CUPS_SC_FD + 1, &input, NULL, NULL, NULL) < 0) + timeout.tv_sec = snmp_update ? (snmp_update - curtime) : 5; + timeout.tv_usec = 0; + if (select(CUPS_SC_FD + 1, &input, NULL, NULL, &timeout) < 0) { /* * Pause printing to clear any pending errors...