X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fpowerdns.c;h=a1b23555bec080592a261f91e1d6e02ae769bd6a;hb=83077c18c3e78739c2d2d18debf99875944eaa72;hp=29f6bca502c7b48be0ecbadd2bc4befabf337885;hpb=2bdaa472d6955a8c93c6aa77f11748d4c611558e;p=collectd.git diff --git a/src/powerdns.c b/src/powerdns.c index 29f6bca5..a1b23555 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,13 @@ 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)); + cdt_timeout = interval_g * 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");