#endif
-#define LOG(kind,...) GNUNET_log_from (kind, "util", __VA_ARGS__)
+#define LOG(kind,...) GNUNET_log_from (kind, "util-service", __VA_ARGS__)
-#define LOG_STRERROR(kind,syscall) GNUNET_log_from_strerror (kind, "util", syscall)
+#define LOG_STRERROR(kind,syscall) GNUNET_log_from_strerror (kind, "util-service", syscall)
-#define LOG_STRERROR_FILE(kind,syscall,filename) GNUNET_log_from_strerror_file (kind, "util", syscall, filename)
+#define LOG_STRERROR_FILE(kind,syscall,filename) GNUNET_log_from_strerror_file (kind, "util-service", syscall, filename)
/**
if (GNUNET_YES == abstract)
un->sun_path[0] = '\0';
#endif
-#if HAVE_SOCKADDR_IN_SIN_LEN
+#if HAVE_SOCKADDR_UN_SUN_LEN
un->sun_len = (u_char) sizeof (struct sockaddr_un);
#endif
*saddrs = (struct sockaddr *) un;
sh->connect_cb = connect_cb;
sh->disconnect_cb = disconnect_cb;
sh->cb_cls = cls;
- if (NULL != handlers)
- {
- unsigned int i;
-
- for (i=0;NULL != handlers[i].cb; i++) ;
- sh->handlers = GNUNET_new_array (i + 1,
- struct GNUNET_MQ_MessageHandler);
- GNUNET_memcpy (sh->handlers,
- handlers,
- i * sizeof (struct GNUNET_MQ_MessageHandler));
- }
+ sh->handlers = GNUNET_MQ_copy_handlers (handlers);
if (GNUNET_OK != setup_service (sh))
{
- GNUNET_free (sh->handlers);
+ GNUNET_free_non_null (sh->handlers);
GNUNET_free (sh);
return NULL;
}
while (NULL != (client = srv->clients_head))
GNUNET_SERVICE_client_drop (client);
teardown_service (srv);
- GNUNET_free (srv->handlers);
+ GNUNET_free_non_null (srv->handlers);
GNUNET_free (srv);
}
sh.connect_cb = connect_cb;
sh.disconnect_cb = disconnect_cb;
sh.cb_cls = cls;
- if (NULL != handlers)
- {
- unsigned int i;
-
- for (i=0;NULL != handlers[i].cb; i++) ;
- sh.handlers = GNUNET_new_array (i + 1,
- struct GNUNET_MQ_MessageHandler);
- GNUNET_memcpy (sh.handlers,
- handlers,
- i * sizeof (struct GNUNET_MQ_MessageHandler));
- }
+ sh.handlers = GNUNET_MQ_copy_handlers (handlers);
sh.service_name = service_name;
/* setup subsystems */
}
#endif
teardown_service (&sh);
- GNUNET_free (sh.handlers);
+ GNUNET_free_non_null (sh.handlers);
GNUNET_SPEEDUP_stop_ ();
GNUNET_CONFIGURATION_destroy (cfg);
GNUNET_free_non_null (logfile);
client->msg_pos += ret;
if (left > ret)
{
+ GNUNET_assert (NULL == client->drop_task);
client->send_task
= GNUNET_SCHEDULER_add_write_net (GNUNET_TIME_UNIT_FOREVER_REL,
client->sock,
{
struct GNUNET_SERVICE_Client *client = impl_state;
+ if (NULL != client->drop_task)
+ return; /* we're going down right now, do not try to send */
GNUNET_assert (NULL == client->send_task);
+
+ LOG (GNUNET_ERROR_TYPE_INFO,
+ "Sending message of type %u and size %u to client\n",
+ ntohs (msg->type), ntohs (msg->size));
+
client->msg = msg;
client->msg_pos = 0;
client->send_task
{
struct GNUNET_SERVICE_Client *client = cls;
+ LOG (GNUNET_ERROR_TYPE_INFO,
+ "Received message of type %u and size %u from client\n",
+ ntohs (message->type), ntohs (message->size));
+
GNUNET_assert (GNUNET_NO == client->needs_continue);
client->needs_continue = GNUNET_YES;
client->warn_type = ntohs (message->type);
struct GNUNET_SERVICE_Client *c = cls;
struct GNUNET_SERVICE_Handle *sh = c->sh;
+ c->drop_task = NULL;
+ GNUNET_assert (NULL == c->send_task);
+ GNUNET_assert (NULL == c->recv_task);
+ GNUNET_assert (NULL == c->warn_task);
GNUNET_MST_destroy (c->mst);
GNUNET_MQ_destroy (c->mq);
if (GNUNET_NO == c->persist)
if (NULL != c->drop_task)
{
/* asked to drop twice! */
- GNUNET_break (0);
+ GNUNET_assert (0);
return;
}
GNUNET_CONTAINER_DLL_remove (sh->clients_head,