aboutsummaryrefslogtreecommitdiff
path: root/src/util/connection.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2010-05-11 19:16:47 +0000
committerChristian Grothoff <christian@grothoff.org>2010-05-11 19:16:47 +0000
commit87c4be711b7a39b3bdae020df735eab4fba2de56 (patch)
tree8715cb7e28efeca6e71ee64dc4d41a3bb39b2afd /src/util/connection.c
parentb6611f1bfbf2f21cc66759b16660d0203db22504 (diff)
downloadgnunet-87c4be711b7a39b3bdae020df735eab4fba2de56.tar.gz
gnunet-87c4be711b7a39b3bdae020df735eab4fba2de56.zip
asserts
Diffstat (limited to 'src/util/connection.c')
-rw-r--r--src/util/connection.c48
1 files changed, 32 insertions, 16 deletions
diff --git a/src/util/connection.c b/src/util/connection.c
index a877e06c2..d2d4432c6 100644
--- a/src/util/connection.c
+++ b/src/util/connection.c
@@ -245,6 +245,11 @@ struct GNUNET_CONNECTION_Handle
245 GNUNET_SCHEDULER_TaskIdentifier write_task; 245 GNUNET_SCHEDULER_TaskIdentifier write_task;
246 246
247 /** 247 /**
248 * Destroy task (if already scheduled).
249 */
250 GNUNET_SCHEDULER_TaskIdentifier destroy_task;
251
252 /**
248 * Handle to a pending DNS lookup request. 253 * Handle to a pending DNS lookup request.
249 */ 254 */
250 struct GNUNET_RESOLVER_RequestHandle *dns_active; 255 struct GNUNET_RESOLVER_RequestHandle *dns_active;
@@ -472,7 +477,8 @@ destroy_continuation (void *cls,
472 struct GNUNET_CONNECTION_Handle *sock = cls; 477 struct GNUNET_CONNECTION_Handle *sock = cls;
473 GNUNET_CONNECTION_TransmitReadyNotify notify; 478 GNUNET_CONNECTION_TransmitReadyNotify notify;
474 struct AddressProbe *pos; 479 struct AddressProbe *pos;
475 480
481 sock->destroy_task = GNUNET_SCHEDULER_NO_TASK;
476 GNUNET_assert (sock->dns_active == NULL); 482 GNUNET_assert (sock->dns_active == NULL);
477 if (0 != (sock->ccs & COCO_TRANSMIT_READY)) 483 if (0 != (sock->ccs & COCO_TRANSMIT_READY))
478 { 484 {
@@ -489,9 +495,11 @@ destroy_continuation (void *cls,
489 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 495 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
490 "Destroy waits for write_task to be done (%p)\n", sock); 496 "Destroy waits for write_task to be done (%p)\n", sock);
491#endif 497#endif
492 GNUNET_SCHEDULER_add_after (sock->sched, 498 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == sock->destroy_task);
493 sock->write_task, 499 sock->destroy_task
494 &destroy_continuation, sock); 500 = GNUNET_SCHEDULER_add_after (sock->sched,
501 sock->write_task,
502 &destroy_continuation, sock);
495 return; 503 return;
496 } 504 }
497 if (0 != (sock->ccs & COCO_RECEIVE_AGAIN)) 505 if (0 != (sock->ccs & COCO_RECEIVE_AGAIN))
@@ -510,9 +518,11 @@ destroy_continuation (void *cls,
510 } 518 }
511 if (sock->read_task != GNUNET_SCHEDULER_NO_TASK) 519 if (sock->read_task != GNUNET_SCHEDULER_NO_TASK)
512 { 520 {
513 GNUNET_SCHEDULER_add_after (sock->sched, 521 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == sock->destroy_task);
514 sock->read_task, 522 sock->destroy_task
515 &destroy_continuation, sock); 523 = GNUNET_SCHEDULER_add_after (sock->sched,
524 sock->read_task,
525 &destroy_continuation, sock);
516 return; 526 return;
517 } 527 }
518#if DEBUG_CONNECTION 528#if DEBUG_CONNECTION
@@ -549,6 +559,7 @@ destroy_continuation (void *cls,
549 } 559 }
550 GNUNET_free_non_null (sock->addr); 560 GNUNET_free_non_null (sock->addr);
551 GNUNET_free_non_null (sock->hostname); 561 GNUNET_free_non_null (sock->hostname);
562 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == sock->destroy_task);
552#if DEBUG_CONNECTION 563#if DEBUG_CONNECTION
553 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 564 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
554 "Freeing memory of connection %p.\n", sock); 565 "Freeing memory of connection %p.\n", sock);
@@ -625,9 +636,11 @@ connect_fail_continuation (struct GNUNET_CONNECTION_Handle *h)
625 h); 636 h);
626#endif 637#endif
627 h->ccs -= COCO_DESTROY_CONTINUATION; 638 h->ccs -= COCO_DESTROY_CONTINUATION;
628 GNUNET_SCHEDULER_add_continuation (h->sched, 639 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == h->destroy_task);
629 &destroy_continuation, 640 h->destroy_task
630 h, GNUNET_SCHEDULER_REASON_TIMEOUT); 641 = GNUNET_SCHEDULER_add_now (h->sched,
642 &destroy_continuation,
643 h);
631 } 644 }
632} 645}
633 646
@@ -683,10 +696,11 @@ connect_success_continuation (struct GNUNET_CONNECTION_Handle *h)
683 h); 696 h);
684#endif 697#endif
685 h->ccs -= COCO_DESTROY_CONTINUATION; 698 h->ccs -= COCO_DESTROY_CONTINUATION;
686 GNUNET_SCHEDULER_add_continuation (h->sched, 699 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == h->destroy_task);
687 &destroy_continuation, 700 h->destroy_task
688 h, 701 = GNUNET_SCHEDULER_add_now (h->sched,
689 GNUNET_SCHEDULER_REASON_PREREQ_DONE); 702 &destroy_continuation,
703 h);
690 } 704 }
691} 705}
692 706
@@ -974,8 +988,10 @@ GNUNET_CONNECTION_destroy (struct GNUNET_CONNECTION_Handle *sock,
974 sock->dns_active = NULL; 988 sock->dns_active = NULL;
975 } 989 }
976 GNUNET_assert (sock->sched != NULL); 990 GNUNET_assert (sock->sched != NULL);
977 GNUNET_SCHEDULER_add_now (sock->sched, 991 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == sock->destroy_task);
978 &destroy_continuation, sock); 992 sock->destroy_task
993 = GNUNET_SCHEDULER_add_now (sock->sched,
994 &destroy_continuation, sock);
979} 995}
980 996
981 997