GNUNET_SCHEDULER_add_shutdown (&service_shutdown,
sh);
GNUNET_SERVICE_resume (sh);
+
+ if (-1 != sh->ready_confirm_fd)
+ {
+ GNUNET_break (1 == WRITE (sh->ready_confirm_fd, ".", 1));
+ GNUNET_break (0 == CLOSE (sh->ready_confirm_fd));
+ sh->ready_confirm_fd = -1;
+ }
+
if (NULL != sh->service_init_cb)
sh->service_init_cb (sh->cb_cls,
sh->cfg,
client);
client->mst = GNUNET_MST_create (&service_client_mst_cb,
client);
- client->user_context = sh->connect_cb (sh->cb_cls,
- client,
- client->mq);
+ if (NULL != sh->connect_cb)
+ client->user_context = sh->connect_cb (sh->cb_cls,
+ client,
+ client->mq);
GNUNET_MQ_set_handlers_closure (client->mq,
client->user_context);
client->recv_task
GNUNET_CONTAINER_DLL_remove (sh->clients_head,
sh->clients_tail,
c);
- sh->disconnect_cb (sh->cb_cls,
- c,
- c->user_context);
+ if (NULL != sh->disconnect_cb)
+ sh->disconnect_cb (sh->cb_cls,
+ c,
+ c->user_context);
if (NULL != c->warn_task)
{
GNUNET_SCHEDULER_cancel (c->warn_task);