X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-common%2Fsimple-watch.c;h=8df18dd7737236b2f3fa0956d025d912cfcd90c1;hb=9c0f9c65093cfa53d45f9b68782321eb8063a032;hp=56c2ccb81c0bcb5db1d9e6caf9bb3ef85a4ee5da;hpb=908e491f7d55209acfbb2595ab1ef5b24502d641;p=catta diff --git a/avahi-common/simple-watch.c b/avahi-common/simple-watch.c index 56c2ccb..8df18dd 100644 --- a/avahi-common/simple-watch.c +++ b/avahi-common/simple-watch.c @@ -521,9 +521,19 @@ int avahi_simple_poll_run(AvahiSimplePoll *s) { s->state = STATE_RUNNING; - if (s->poll_func(s->pollfds, s->n_pollfds, s->prepared_timeout, s->poll_func_userdata) < 0) { - s->state = STATE_FAILURE; - return -1; + for (;;) { + errno = 0; + + if (s->poll_func(s->pollfds, s->n_pollfds, s->prepared_timeout, s->poll_func_userdata) < 0) { + + if (errno == EINTR) + continue; + + s->state = STATE_FAILURE; + return -1; + } + + break; } /* The poll events are now valid again */