X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-common%2Fsimple-watch.c;h=8df18dd7737236b2f3fa0956d025d912cfcd90c1;hb=826ad91480c05fb3672aa938fc9f1ced3034a0e8;hp=aab71f68c07c58d2e62b6c058eda4f51ac13ed8c;hpb=a97605e07ad7f44f2f65e15be64880e61a39ab43;p=catta diff --git a/avahi-common/simple-watch.c b/avahi-common/simple-watch.c index aab71f6..8df18dd 100644 --- a/avahi-common/simple-watch.c +++ b/avahi-common/simple-watch.c @@ -1,5 +1,3 @@ -/* $Id$ */ - /*** This file is part of avahi. @@ -523,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 */