regex profiler fixes
[oweals/gnunet.git] / src / stream / perf_stream_api.c
index e7e37792a8c62622c0a2da7607acca4ecccbcc83..fdce1c5c1035e4601f6b8d5b33cd803bdf1a58b5 100644 (file)
@@ -397,7 +397,7 @@ static void
 do_abort (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   abort_task = GNUNET_SCHEDULER_NO_TASK;
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: ABORT\n");
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "test: ABORT\n");
   if (GNUNET_SCHEDULER_NO_TASK != read_task)
     GNUNET_SCHEDULER_cancel (read_task);
   result = GNUNET_SYSERR;
@@ -438,13 +438,26 @@ write_completion (void *cls, enum GNUNET_STREAM_Status status, size_t size)
   double throughput;
   double prof_time_sec;
 
-  GNUNET_assert (GNUNET_STREAM_OK == status);
+  if (GNUNET_STREAM_OK != status)
+  {
+    GNUNET_SCHEDULER_cancel (abort_task);
+    abort_task = GNUNET_SCHEDULER_add_now (&do_abort, NULL);
+    return;
+  }
   GNUNET_assert (size <= DATA_SIZE);
   pdata->bytes_wrote += size;
   for (;size > 0; size--)
     update_meter (meter);
   if (pdata->bytes_wrote < DATA_SIZE) /* Have more data to send */
-  {
+  {      
+    if (GNUNET_SCHEDULER_NO_TASK != abort_task)
+    {
+      GNUNET_SCHEDULER_cancel (abort_task);
+      abort_task = 
+          GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
+                                        (GNUNET_TIME_UNIT_SECONDS, 300), &do_abort,
+                                    NULL);
+    }
     pdata->io_write_handle =
        GNUNET_STREAM_write (pdata->socket,
                             ((void *) data) + pdata->bytes_wrote,
@@ -537,7 +550,12 @@ input_processor (void *cls, enum GNUNET_STREAM_Status status,
 {
   struct PeerData *pdata = cls;
 
-  GNUNET_assert (GNUNET_STREAM_OK == status);
+  if (GNUNET_STREAM_OK != status)
+  {
+    GNUNET_SCHEDULER_cancel (abort_task);
+    abort_task = GNUNET_SCHEDULER_add_now (&do_abort, NULL);
+    return 0;
+  }
   GNUNET_assert (size < DATA_SIZE);
   GNUNET_assert (0 == memcmp (((void *)data ) + pdata->bytes_read, 
                              input_data, size));
@@ -926,7 +944,7 @@ int main (int argc, char **argv)
     PRINTF ("\nTesting over 1 hop with payload size %hu\n",
             payload_size[payload_size_index]);
     (void) memset (peer_data, 0, sizeof (peer_data));
-    result = GNUNET_SYSERR;
+    result = INIT;
     GNUNET_TESTBED_test_run (test_name, cfg_file, num_peers, event_mask,
                             &controller_event_cb, NULL, &test_master, NULL);
     if (DOWNLINK_OK != result)