{
#if DEBUG_HTTP
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
- "Using outbound client session to send to `%s'\n",
+ "Using outbound client session %p to send to `%s'\n",
+ s,
GNUNET_i2s (target));
#endif
+
client_send (s, msg);
res = msgbuf_size;
}
if (s->inbound == GNUNET_YES)
{
- server_send (s, msg);
- res = msgbuf_size;
#if DEBUG_HTTP
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
- "Using inbound server session to send to `%s'\n",
+ "Using inbound server %p session to send to `%s'\n",
+ s,
GNUNET_i2s (target));
#endif
+ server_send (s, msg);
+ res = msgbuf_size;
}
return res;
}
else
GNUNET_assert (GNUNET_OK == server_disconnect (s));
GNUNET_CONTAINER_DLL_remove (plugin->head, plugin->tail, s);
+
+ struct HTTP_Message * msg = s->msg_head;
+ struct HTTP_Message * tmp = s->msg_head;
+ while (msg != NULL)
+ {
+ tmp = msg->next;
+
+ GNUNET_CONTAINER_DLL_remove(s->msg_head,s->msg_tail, msg);
+ if (msg->transmit_cont != NULL)
+ {
+ msg->transmit_cont(msg->transmit_cont_cls, target, GNUNET_SYSERR);
+ }
+ GNUNET_free (msg);
+ msg = tmp;
+ }
+
delete_session (s);
}
s = next;
while (s != NULL)
{
struct Session *t = s->next;
-
GNUNET_CONTAINER_DLL_remove (plugin->head, plugin->tail, s);
+
+ struct HTTP_Message * msg = s->msg_head;
+ struct HTTP_Message * tmp = s->msg_head;
+ while (msg != NULL)
+ {
+ tmp = msg->next;
+
+ GNUNET_CONTAINER_DLL_remove(s->msg_head,s->msg_tail, msg);
+ if (msg->transmit_cont != NULL)
+ {
+ msg->transmit_cont(msg->transmit_cont_cls, &s->target, GNUNET_SYSERR);
+ }
+ GNUNET_free (msg);
+ msg = tmp;
+ }
+
delete_session (s);
s = t;
}
server_send_callback (void *cls, uint64_t pos, char *buf, size_t max)
{
struct Session *s = cls;
-
+#if VERBOSE_SERVER
+ GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, s->plugin->name,
+ "Server: %X can sent maximum %u \n", s, max);
+#endif
struct HTTP_Message *msg;
int bytes_read = 0;
#if VERBOSE_CLIENT
struct Plugin *plugin = s->plugin;
-
- GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
+ GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
"Server: %X: sent %u bytes\n", s, bytes_read);
#endif
return bytes_read;
}
t = t->next;
}
-
-
return GNUNET_OK;
}
if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
return;
-
+#if VERBOSE_SERVER
+ GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
+ "Running IPv6 server\n");
+#endif
GNUNET_assert (MHD_YES == MHD_run (plugin->server_v4));
if (plugin->server_v4 != NULL)
plugin->server_v4_task =
if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
return;
-
+#if VERBOSE_SERVER
+ GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
+ "Running IPv6 server\n");
+#endif
GNUNET_assert (MHD_YES == MHD_run (plugin->server_v6));
if (plugin->server_v6 != NULL)
plugin->server_v6_task =
GNUNET_NETWORK_fdset_copy_native (wrs, &rs, max + 1);
GNUNET_NETWORK_fdset_copy_native (wws, &ws, max + 1);
GNUNET_NETWORK_fdset_copy_native (wes, &es, max + 1);
+
if (daemon_handle == plugin->server_v4)
{
if (plugin->server_v4_task != GNUNET_SCHEDULER_NO_TASK)
GNUNET_SCHEDULER_cancel (plugin->server_v4_task);
plugin->server_v4_task = GNUNET_SCHEDULER_NO_TASK;
}
-
+#if VERBOSE_SERVER
+ GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
+ "Scheduling IPv4 server task in %llu ms\n", tv);
+#endif
ret =
GNUNET_SCHEDULER_add_select (GNUNET_SCHEDULER_PRIORITY_DEFAULT,
GNUNET_SCHEDULER_NO_TASK, tv, wrs, wws,
GNUNET_SCHEDULER_cancel (plugin->server_v6_task);
plugin->server_v6_task = GNUNET_SCHEDULER_NO_TASK;
}
-
+#if VERBOSE_SERVER
+ GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
+ "Scheduling IPv6 server task in %llu ms\n", tv);
+#endif
ret =
GNUNET_SCHEDULER_add_select (GNUNET_SCHEDULER_PRIORITY_DEFAULT,
GNUNET_SCHEDULER_NO_TASK, tv, wrs, wws,
struct Session *s = NULL;
struct Session *t = NULL;
+#if VERBOSE_SERVER
+ GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
+ "server_stop\n");
+#endif
+
struct MHD_Daemon *server_v4_tmp = plugin->server_v4;
plugin->server_v4 = NULL;
s = plugin->server_semi_head;
while (s != NULL)
{
+#if VERBOSE_SERVER
+ GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
+ "Deleting semi-sessions %p\n", s);
+#endif
t = s->next;
+ struct HTTP_Message * msg = s->msg_head;
+ struct HTTP_Message * tmp = s->msg_head;
+ while (msg != NULL)
+ {
+ tmp = msg->next;
+
+ GNUNET_CONTAINER_DLL_remove(s->msg_head,s->msg_tail, msg);
+ if (msg->transmit_cont != NULL)
+ {
+ msg->transmit_cont(msg->transmit_cont_cls, &s->target, GNUNET_SYSERR);
+ }
+ GNUNET_free (msg);
+ msg = tmp;
+ }
+
delete_session (s);
s = t;
}