restart the helper when something goes wrong
authorPhilipp Tölke <toelke@in.tum.de>
Tue, 20 Jul 2010 19:53:52 +0000 (19:53 +0000)
committerPhilipp Tölke <toelke@in.tum.de>
Tue, 20 Jul 2010 19:53:52 +0000 (19:53 +0000)
src/vpn/gnunet-daemon-vpn.c

index e3ae2a16ef1c102eb7860726ce7e03d55b8d3b18..b003d7b531e30a3266edd646fd83aa790d51567e 100644 (file)
@@ -92,8 +92,9 @@ static void helper_read(void* cls, const struct GNUNET_SCHEDULER_TaskContext* ts
 
        while (r < sizeof(struct suid_packet_header)) {
                int t = GNUNET_DISK_file_read(mycls->fh_from_helper, &hdr, sizeof(struct suid_packet_header));
-               if (t< 0) {
+               if (t<=0) {
                        fprintf(stderr, "Read error for header: %m\n");
+                       GNUNET_SCHEDULER_add_now(mycls->sched, restart_helper, cls);
                        return;
                }
                r += t;
@@ -108,8 +109,9 @@ static void helper_read(void* cls, const struct GNUNET_SCHEDULER_TaskContext* ts
 
        while (r < ntohl(pkt->hdr.size)) {
                int t = GNUNET_DISK_file_read(mycls->fh_from_helper, (unsigned char*)pkt + r, ntohl(pkt->hdr.size) - r);
-               if (t< 0) {
+               if (t<=0) {
                        fprintf(stderr, "Read error for data: %m\n");
+                       GNUNET_SCHEDULER_add_now(mycls->sched, restart_helper, cls);
                        return;
                }
                r += t;