diff --git a/src/serviceprobe.c b/src/serviceprobe.c index 199f1de7..e0b2cd39 100644 --- a/src/serviceprobe.c +++ b/src/serviceprobe.c @@ -59,6 +59,20 @@ serviceprobe_enqueue(th_transport_t *t) pthread_cond_signal(&serviceprobe_cond); } + +/** + * + */ +void +serviceprobe_delete(th_transport_t *t) +{ + if(!t->tht_sp_onqueue) + return; + TAILQ_REMOVE(&serviceprobe_queue, t, tht_sp_link); + t->tht_sp_onqueue = 0; +} + + /** * */ diff --git a/src/serviceprobe.h b/src/serviceprobe.h index bb1fba84..f39ef835 100644 --- a/src/serviceprobe.h +++ b/src/serviceprobe.h @@ -23,4 +23,6 @@ void serviceprobe_init(void); void serviceprobe_enqueue(th_transport_t *t); +void serviceprobe_delete(th_transport_t *t); + #endif /* SERVICEPROBE_H_ */ diff --git a/src/transports.c b/src/transports.c index a7e83701..f92b65f4 100644 --- a/src/transports.c +++ b/src/transports.c @@ -392,6 +392,8 @@ transport_destroy(th_transport_t *t) lock_assert(&global_lock); + serviceprobe_delete(t); + while((s = LIST_FIRST(&t->tht_subscriptions)) != NULL) { subscription_unlink_transport(s); } @@ -421,7 +423,6 @@ transport_destroy(th_transport_t *t) free(st); } - abort();// serviceprobe_delete(t); transport_unref(t); }