shutdown fix
authorChristian Grothoff <christian@grothoff.org>
Wed, 19 May 2010 19:30:06 +0000 (19:30 +0000)
committerChristian Grothoff <christian@grothoff.org>
Wed, 19 May 2010 19:30:06 +0000 (19:30 +0000)
src/arm/gnunet-service-manager.c

index d97ce7ffdb584f0df5a576093ba87d3abe0bfd6c..346ee182a8b72c1f533dd6e43331c770f3cb252c 100644 (file)
@@ -441,6 +441,13 @@ receiveFromService (void *cls,
   struct GNUNET_TIME_Relative rem;
 
   fc->service_to_client_task = GNUNET_SCHEDULER_NO_TASK;
+  if ( (NULL != tc) &&
+       (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) &&
+       (fc->first_write_done != GNUNET_YES) )
+    {
+      closeClientAndServiceSockets (fc, REASON_ERROR);
+      return;
+    }
   if (GNUNET_YES != GNUNET_NETWORK_fdset_isset (tc->read_ready,
                                                fc->armServiceSocket))
     {
@@ -537,6 +544,13 @@ forwardToService (void *cls,
   struct GNUNET_TIME_Relative rem;
 
   fc->client_to_service_task = GNUNET_SCHEDULER_NO_TASK;
+  if ( (NULL != tc) &&
+       (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) &&
+       (fc->first_write_done != GNUNET_YES) )
+    {
+      closeClientAndServiceSockets (fc, REASON_ERROR);
+      return;
+    }
   if (GNUNET_YES != GNUNET_NETWORK_fdset_isset (tc->write_ready,
                                                fc->armServiceSocket))
     {