X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fpowerdns.c;h=508ea506f86cd08a1f2ff52ccae3333ad62ab8dd;hb=650c36841827fc1ee5536edb60fc84acf83c1fce;hp=29f6bca502c7b48be0ecbadd2bc4befabf337885;hpb=c7fa720673a53e395345631ce436cd7c91da5491;p=collectd.git diff --git a/src/powerdns.c b/src/powerdns.c index 29f6bca5..508ea506 100644 --- a/src/powerdns.c +++ b/src/powerdns.c @@ -321,6 +321,9 @@ static int powerdns_get_data_dgram (list_item_t *item, /* {{{ */ struct sockaddr_un sa_unix; + struct timeval stv_timeout; + cdtime_t cdt_timeout; + sd = socket (PF_UNIX, item->socktype, 0); if (sd < 0) { @@ -361,12 +364,15 @@ static int powerdns_get_data_dgram (list_item_t *item, /* {{{ */ break; } - struct timeval timeout; - timeout.tv_sec=2; - if (timeout.tv_sec < interval_g * 3 / 4) - timeout.tv_sec = interval_g * 3 / 4; - timeout.tv_usec=0; - status = setsockopt (sd, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof (timeout)); + /* TODO: Remove the macro once interval_g is of type cdtime_t. */ + cdt_timeout = TIME_T_TO_CDTIME_T (interval_g); + cdt_timeout = cdt_timeout * 3 / 4; + if (cdt_timeout < TIME_T_TO_CDTIME_T (2)) + cdt_timeout = TIME_T_TO_CDTIME_T (2); + + CDTIME_T_TO_TIMEVAL (cdt_timeout, &stv_timeout); + + status = setsockopt (sd, SOL_SOCKET, SO_RCVTIMEO, &stv_timeout, sizeof (stv_timeout)); if (status != 0) { FUNC_ERROR ("setsockopt");