/*
This file is part of GNUnet
- (C) 2002--2012 Christian Grothoff (and other contributing authors)
+ (C) 2002--2013 Christian Grothoff (and other contributing authors)
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
/**
* Map from peer identities to sessions for the given peer.
*/
- struct GNUNET_CONTAINER_MultiHashMap *sessionmap;
+ struct GNUNET_CONTAINER_MultiPeerMap *sessionmap;
/**
* Handle to the network service.
/**
* Map of peers we have tried to contact behind a NAT
*/
- struct GNUNET_CONTAINER_MultiHashMap *nat_wait_conns;
+ struct GNUNET_CONTAINER_MultiPeerMap *nat_wait_conns;
/**
* List of active TCP probes.
static unsigned int sessions;
-static void
+static void
inc_sessions (struct Plugin *plugin, struct Session *session, int line)
{
sessions++;
- unsigned int size = GNUNET_CONTAINER_multihashmap_size(plugin->sessionmap);
+ unsigned int size = GNUNET_CONTAINER_multipeermap_size(plugin->sessionmap);
if (sessions != size)
LOG (GNUNET_ERROR_TYPE_DEBUG, "Inconsistent sessions %u <-> session map size: %u\n",
sessions, size);
}
-static void
+static void
dec_sessions (struct Plugin *plugin, struct Session *session, int line)
{
GNUNET_assert (sessions > 0);
- unsigned int size = GNUNET_CONTAINER_multihashmap_size(plugin->sessionmap);
+ unsigned int size = GNUNET_CONTAINER_multipeermap_size(plugin->sessionmap);
sessions--;
if (sessions != size)
LOG (GNUNET_ERROR_TYPE_DEBUG, "Inconsistent sessions %u <-> session map size: %u\n",
uint16_t port;
uint32_t options;
- options = 0;
switch (addrlen)
{
case sizeof (struct IPv6TcpAddress):
memcpy (&a6, &t6->ipv6_addr, sizeof (a6));
sb = &a6;
break;
- case sizeof (struct IPv4TcpAddress):
+ case sizeof (struct IPv4TcpAddress):
t4 = addr;
af = AF_INET;
port = ntohs (t4->t4_port);
address = NULL;
plugin = NULL;
optionstr = NULL;
- options = 0;
if ((NULL == addr) || (addrlen == 0))
{
GNUNET_break (0);
*added = sizeof (struct IPv4TcpAddress);
return GNUNET_OK;
}
- case AF_INET6:
+ case AF_INET6:
{
struct IPv6TcpAddress *t6;
struct sockaddr_in6 *in6 = (struct sockaddr_in6 *) &socket_address;
};
-static int
+static int
session_lookup_by_client_it (void *cls,
- const struct GNUNET_HashCode * key,
+ const struct GNUNET_PeerIdentity *key,
void *value)
{
struct SessionClientCtx *sc_ctx = cls;
sc_ctx.client = client;
sc_ctx.ret = NULL;
- GNUNET_CONTAINER_multihashmap_iterate (plugin->sessionmap, &session_lookup_by_client_it, &sc_ctx);
+ GNUNET_CONTAINER_multipeermap_iterate (plugin->sessionmap, &session_lookup_by_client_it, &sc_ctx);
return sc_ctx.ret;
}
else
GNUNET_assert (NULL == client);
- LOG (GNUNET_ERROR_TYPE_DEBUG,
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
"Creating new session for peer `%4s'\n",
GNUNET_i2s (target));
session = GNUNET_malloc (sizeof (struct Session));
plugin = session->plugin;
if (NULL == buf)
{
- LOG (GNUNET_ERROR_TYPE_DEBUG,
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
"Timeout trying to transmit to peer `%4s', discarding message queue.\n",
GNUNET_i2s (&session->target));
/* timeout; cancel all messages that have already expired */
ret = 0;
now = GNUNET_TIME_absolute_get ();
while ((NULL != (pos = session->pending_messages_head)) &&
- (pos->timeout.abs_value <= now.abs_value))
+ (pos->timeout.abs_value_us <= now.abs_value_us))
{
GNUNET_CONTAINER_DLL_remove (session->pending_messages_head,
session->pending_messages_tail, pos);
GNUNET_CONTAINER_DLL_remove (session->pending_messages_head,
session->pending_messages_tail, pos);
GNUNET_assert (size >= pos->message_size);
- LOG (GNUNET_ERROR_TYPE_DEBUG,
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
"Transmitting message of type %u\n",
ntohs (((struct GNUNET_MessageHeader *) pos->msg)->type));
/* FIXME: this memcpy can be up to 7% of our total runtime */
struct PendingMessage *pm;
struct Plugin * plugin = session->plugin;
- LOG (GNUNET_ERROR_TYPE_DEBUG,
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
"Disconnecting session of peer `%s' address `%s'\n",
GNUNET_i2s (&session->target),
tcp_address_to_string (NULL, session->addr, session->addrlen));
stop_session_timeout (session);
- if (GNUNET_YES == GNUNET_CONTAINER_multihashmap_remove (plugin->sessionmap, &session->target.hashPubKey, session))
+ if (GNUNET_YES == GNUNET_CONTAINER_multipeermap_remove (plugin->sessionmap, &session->target, session))
{
GNUNET_STATISTICS_update (session->plugin->env->stats,
gettext_noop ("# TCP sessions active"), -1,
GNUNET_NO);
dec_sessions (plugin, session, __LINE__);
}
- else GNUNET_assert (GNUNET_YES == GNUNET_CONTAINER_multihashmap_remove (plugin->nat_wait_conns, &session->target.hashPubKey, session));
+ else GNUNET_assert (GNUNET_YES == GNUNET_CONTAINER_multipeermap_remove (plugin->nat_wait_conns, &session->target, session));
/* clean up state */
if (session->transmit_handle != NULL)
while (NULL != (pm = session->pending_messages_head))
{
- LOG (GNUNET_ERROR_TYPE_DEBUG,
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
pm->transmit_cont !=
NULL ? "Could not deliver message to `%4s'.\n" :
"Could not deliver message to `%4s', notifying.\n",
int res;
};
-int session_it (void *cls,
- const struct GNUNET_HashCode * key,
- void *value)
+
+static int
+session_it (void *cls,
+ const struct GNUNET_PeerIdentity * key,
+ void *value)
{
struct FindSessionContext *res = cls;
+
if (res->s == value)
{
res->res = GNUNET_OK;
return GNUNET_NO;
}
- else
- return GNUNET_YES;
+ return GNUNET_YES;
}
-int find_session (struct Plugin *plugin, struct Session *session)
+
+static int
+find_session (struct Plugin *plugin, struct Session *session)
{
struct FindSessionContext session_map_res;
struct FindSessionContext nat_map_res;
session_map_res.s = session;
session_map_res.res = GNUNET_SYSERR;
- GNUNET_CONTAINER_multihashmap_iterate (plugin->sessionmap, &session_it, &session_map_res);
+ GNUNET_CONTAINER_multipeermap_iterate (plugin->sessionmap, &session_it, &session_map_res);
nat_map_res.s = session;
nat_map_res.res = GNUNET_SYSERR;
- GNUNET_CONTAINER_multihashmap_iterate (plugin->nat_wait_conns, &session_it, &nat_map_res);
+ GNUNET_CONTAINER_multipeermap_iterate (plugin->nat_wait_conns, &session_it, &nat_map_res);
if ((session_map_res.res == GNUNET_SYSERR) && (nat_map_res.res == GNUNET_SYSERR))
{
pm->transmit_cont = cont;
pm->transmit_cont_cls = cont_cls;
- LOG (GNUNET_ERROR_TYPE_DEBUG,
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
"Asked to transmit %u bytes to `%s', added message to list.\n",
msgbuf_size, GNUNET_i2s (&session->target));
- if (GNUNET_YES == GNUNET_CONTAINER_multihashmap_contains_value (plugin->sessionmap,
- &session->target.hashPubKey,
+ if (GNUNET_YES == GNUNET_CONTAINER_multipeermap_contains_value (plugin->sessionmap,
+ &session->target,
session))
{
GNUNET_assert (session->client != NULL);
process_pending_messages (session);
return msgbuf_size;
}
- else if (GNUNET_YES == GNUNET_CONTAINER_multihashmap_contains_value(plugin->nat_wait_conns, &session->target.hashPubKey, session))
+ else if (GNUNET_YES == GNUNET_CONTAINER_multipeermap_contains_value(plugin->nat_wait_conns, &session->target, session))
{
- LOG (GNUNET_ERROR_TYPE_DEBUG,
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
"This NAT WAIT session for peer `%s' is not yet ready!\n",
GNUNET_i2s (&session->target));
reschedule_session_timeout (session);
};
-static int
+static int
session_lookup_it (void *cls,
- const struct GNUNET_HashCode *key,
+ const struct GNUNET_PeerIdentity *key,
void *value)
{
struct SessionItCtx * si_ctx = cls;
GNUNET_assert (plugin != NULL);
GNUNET_assert (address != NULL);
addrlen = address->address_length;
- LOG (GNUNET_ERROR_TYPE_DEBUG,
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
"Trying to get session for `%s' address of peer `%s'\n",
tcp_address_to_string(NULL, address->address, address->address_length),
GNUNET_i2s (&address->peer));
/* look for existing session */
- if (GNUNET_YES ==
- GNUNET_CONTAINER_multihashmap_contains (plugin->sessionmap,
- &address->peer.hashPubKey))
+ if (GNUNET_YES ==
+ GNUNET_CONTAINER_multipeermap_contains (plugin->sessionmap,
+ &address->peer))
{
struct SessionItCtx si_ctx;
si_ctx.result = NULL;
- GNUNET_CONTAINER_multihashmap_get_multiple (plugin->sessionmap,
- &address->peer.hashPubKey,
+ GNUNET_CONTAINER_multipeermap_get_multiple (plugin->sessionmap,
+ &address->peer,
&session_lookup_it, &si_ctx);
if (si_ctx.result != NULL)
{
if ((is_natd == GNUNET_YES) &&
(GNUNET_YES ==
- GNUNET_CONTAINER_multihashmap_contains (plugin->nat_wait_conns,
- &address->peer.hashPubKey)))
+ GNUNET_CONTAINER_multipeermap_contains (plugin->nat_wait_conns,
+ &address->peer)))
{
/* Only do one NAT punch attempt per peer identity */
return NULL;
if ((is_natd == GNUNET_YES) && (NULL != plugin->nat) &&
(GNUNET_NO ==
- GNUNET_CONTAINER_multihashmap_contains (plugin->nat_wait_conns,
- &address->peer.hashPubKey)))
+ GNUNET_CONTAINER_multipeermap_contains (plugin->nat_wait_conns,
+ &address->peer)))
{
- LOG (GNUNET_ERROR_TYPE_DEBUG,
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
"Found valid IPv4 NAT address (creating session)!\n") ;
session = create_session (plugin, &address->peer, NULL, GNUNET_YES);
session->addrlen = 0;
session);
GNUNET_assert (session != NULL);
GNUNET_assert (GNUNET_OK ==
- GNUNET_CONTAINER_multihashmap_put (plugin->nat_wait_conns,
- &session->target.hashPubKey,
+ GNUNET_CONTAINER_multipeermap_put (plugin->nat_wait_conns,
+ &session->target,
session,
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
- LOG (GNUNET_ERROR_TYPE_DEBUG,
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
"Created NAT WAIT connection to `%4s' at `%s'\n",
GNUNET_i2s (&session->target), GNUNET_a2s (sb, sbs));
return session;
else
{
- LOG (GNUNET_ERROR_TYPE_DEBUG,
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
"Running NAT client for `%4s' at `%s' failed\n",
GNUNET_i2s (&session->target), GNUNET_a2s (sb, sbs));
disconnect_session (session);
sa = GNUNET_CONNECTION_create_from_sockaddr (af, sb, sbs);
if (sa == NULL)
{
- LOG (GNUNET_ERROR_TYPE_DEBUG,
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
"Failed to create connection to `%4s' at `%s'\n",
GNUNET_i2s (&address->peer), GNUNET_a2s (sb, sbs));
return NULL;
session->addrlen = addrlen;
session->ats_address_network_type = ats.value;
- GNUNET_CONTAINER_multihashmap_put (plugin->sessionmap,
- &session->target.hashPubKey,
+ GNUNET_CONTAINER_multipeermap_put (plugin->sessionmap,
+ &session->target,
session, GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
inc_sessions (plugin, session, __LINE__);
LOG (GNUNET_ERROR_TYPE_DEBUG,
}
-static int
+static int
session_disconnect_it (void *cls,
- const struct GNUNET_HashCode * key,
+ const struct GNUNET_PeerIdentity *key,
void *value)
{
struct Session *session = value;
{
struct Plugin *plugin = cls;
- LOG (GNUNET_ERROR_TYPE_DEBUG,
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
"Disconnecting peer `%4s'\n", GNUNET_i2s (target));
- GNUNET_CONTAINER_multihashmap_get_multiple (plugin->sessionmap, &target->hashPubKey, &session_disconnect_it, plugin);
- GNUNET_CONTAINER_multihashmap_get_multiple (plugin->nat_wait_conns, &target->hashPubKey, &session_disconnect_it, plugin);
+ GNUNET_CONTAINER_multipeermap_get_multiple (plugin->sessionmap, target,
+ &session_disconnect_it, plugin);
+ GNUNET_CONTAINER_multipeermap_get_multiple (plugin->nat_wait_conns, target,
+ &session_disconnect_it, plugin);
}
};
+
void
ppc_cancel_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
- struct PrettyPrinterContext *ppc = cls;
- /* GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "PPC %p was not removed!\n", ppc); */
+ int count = 0;
+ struct PrettyPrinterContext *ppc = cls;
+ struct PrettyPrinterContext *cur;
+ for (cur = ppc_dll_head; (NULL != cur); cur = cur->next)
+ {
+ if (cur != ppc)
+ count++;
+ }
+
+ // GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Cancel request %p, %u pending\n", ppc, count);
ppc->timeout_task = GNUNET_SCHEDULER_NO_TASK;
if (NULL != ppc->resolver_handle)
{
struct PrettyPrinterContext *ppc = cls;
struct PrettyPrinterContext *cur;
char *ret;
- /* GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "PPC callback: %p `%s'\n",ppc, hostname); */
+ int count = 0;
+
+ for (cur = ppc_dll_head; (NULL != cur); cur = cur->next)
+ {
+ if (cur != ppc)
+ count++;
+ }
+ //GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Callback request %p == %s, %u pending\n", ppc, hostname, count);
if (hostname == NULL)
{
ppc->asc (ppc->asc_cls, NULL);
GNUNET_SCHEDULER_cancel (ppc->timeout_task);
ppc->timeout_task = GNUNET_SCHEDULER_NO_TASK;
ppc->resolver_handle = NULL;
- /* GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "PPC %p was removed!\n", ppc); */
+ //GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Done request %p, %u pending\n", ppc, count);
GNUNET_free (ppc);
return;
}
uint16_t port;
uint32_t options;
-
- options = 0;
if (addrlen == sizeof (struct IPv6TcpAddress))
{
t6 = addr;
ppc->options = options;
ppc->timeout_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply(timeout, 2),
&ppc_cancel_task, ppc);
- GNUNET_CONTAINER_DLL_insert (ppc_dll_head, ppc_dll_tail, ppc);
- /* GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "PPC %p was created!\n", ppc); */
ppc->resolver_handle = GNUNET_RESOLVER_hostname_get (sb, sbs, !numeric,
timeout, &append_port, ppc);
+ if (NULL != ppc->resolver_handle)
+ {
+ //GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Adding request %p\n", ppc);
+ GNUNET_CONTAINER_DLL_insert (ppc_dll_head, ppc_dll_tail, ppc);
+ }
+ else
+ {
+ GNUNET_break (0);
+ GNUNET_free (ppc);
+ }
}
}
session =
- GNUNET_CONTAINER_multihashmap_get (plugin->nat_wait_conns,
+ GNUNET_CONTAINER_multipeermap_get (plugin->nat_wait_conns,
&tcp_nat_probe->
- clientIdentity.hashPubKey);
+ clientIdentity);
if (session == NULL)
{
- LOG (GNUNET_ERROR_TYPE_DEBUG,
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
"Did NOT find session for NAT probe!\n");
GNUNET_SERVER_receive_done (client, GNUNET_OK);
return;
}
- LOG (GNUNET_ERROR_TYPE_DEBUG,
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
"Found session for NAT probe!\n");
if (session->nat_connection_timeout != GNUNET_SCHEDULER_NO_TASK)
disconnect_session (session);
return;
}
- GNUNET_assert (GNUNET_CONTAINER_multihashmap_remove
+ GNUNET_assert (GNUNET_CONTAINER_multipeermap_remove
(plugin->nat_wait_conns,
- &tcp_nat_probe->clientIdentity.hashPubKey,
+ &tcp_nat_probe->clientIdentity,
session) == GNUNET_YES);
- GNUNET_CONTAINER_multihashmap_put (plugin->sessionmap,
- &session->target.hashPubKey, session,
- GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
+ GNUNET_CONTAINER_multipeermap_put (plugin->sessionmap,
+ &session->target, session,
+ GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
session->last_activity = GNUNET_TIME_absolute_get ();
session->inbound = GNUNET_NO;
- LOG (GNUNET_ERROR_TYPE_DEBUG,
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
"Found address `%s' for incoming connection\n",
GNUNET_a2s (vaddr, alen));
switch (((const struct sockaddr *) vaddr)->sa_family)
break;
default:
GNUNET_break_op (0);
- LOG (GNUNET_ERROR_TYPE_DEBUG,
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
"Bad address for incoming connection!\n");
GNUNET_free (vaddr);
GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
session,
GNUNET_a2s (vaddr, alen));
GNUNET_free (vaddr);
- GNUNET_CONTAINER_multihashmap_put (plugin->sessionmap,
- &session->target.hashPubKey,
+ GNUNET_CONTAINER_multipeermap_put (plugin->sessionmap,
+ &session->target,
session,
GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
inc_sessions (plugin, session, __LINE__);
}
else
{
- LOG (GNUNET_ERROR_TYPE_DEBUG,
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
"Did not obtain TCP socket address for incoming connection\n");
GNUNET_break (0);
}
/* No inbound session found */
void *vaddr;
size_t alen;
-
+
GNUNET_SERVER_client_get_address (client, &vaddr, &alen);
- LOG (GNUNET_ERROR_TYPE_ERROR,
+ LOG (GNUNET_ERROR_TYPE_ERROR,
"Received unexpected %u bytes of type %u from `%s'\n",
(unsigned int) ntohs (message->size),
(unsigned int) ntohs (message->type),
size_t alen;
GNUNET_SERVER_client_get_address (client, &vaddr, &alen);
- LOG (GNUNET_ERROR_TYPE_ERROR,
+ LOG (GNUNET_ERROR_TYPE_ERROR,
"Received unexpected %u bytes of type %u from `%s'\n",
(unsigned int) ntohs (message->size),
(unsigned int) ntohs (message->type),
}
session->last_activity = GNUNET_TIME_absolute_get ();
- LOG (GNUNET_ERROR_TYPE_DEBUG,
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
"Passing %u bytes of type %u from `%4s' to transport service.\n",
(unsigned int) ntohs (message->size),
(unsigned int) ntohs (message->type),
distance.value = session->ats_address_network_type;
GNUNET_break (ntohl(session->ats_address_network_type) != GNUNET_ATS_NET_UNSPECIFIED);
- GNUNET_assert (GNUNET_CONTAINER_multihashmap_contains_value (plugin->sessionmap,
- &session->target.hashPubKey,
- session));
+ GNUNET_assert (GNUNET_CONTAINER_multipeermap_contains_value (plugin->sessionmap,
+ &session->target,
+ session));
delay = plugin->env->receive (plugin->env->cls,
&session->target,
reschedule_session_timeout (session);
- if (delay.rel_value == 0)
+ if (0 == delay.rel_value_us)
{
GNUNET_SERVER_receive_done (client, GNUNET_OK);
}
else
{
- LOG (GNUNET_ERROR_TYPE_DEBUG,
- "Throttling receiving from `%s' for %llu ms\n",
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
+ "Throttling receiving from `%s' for %s\n",
GNUNET_i2s (&session->target),
- (unsigned long long) delay.rel_value);
+ GNUNET_STRINGS_relative_time_to_string (delay, GNUNET_YES));
GNUNET_SERVER_disable_receive_done_warning (client);
session->receive_delay_task =
GNUNET_SCHEDULER_add_delayed (delay, &delayed_done, session);
s->timeout_task = GNUNET_SCHEDULER_NO_TASK;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Session %p was idle for %llu ms, disconnecting\n",
- s, (unsigned long long) GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT.rel_value);
+ "Session %p was idle for %s, disconnecting\n",
+ s,
+ GNUNET_STRINGS_relative_time_to_string (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT,
+ GNUNET_YES));
/* call session destroy function */
disconnect_session(s);
}
&session_timeout,
s);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Timeout for session %p set to %llu ms\n",
- s, (unsigned long long) GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT.rel_value);
+ "Timeout for session %p set to %s\n",
+ s,
+ GNUNET_STRINGS_relative_time_to_string (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT,
+ GNUNET_YES));
}
&session_timeout,
s);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Timeout rescheduled for session %p set to %llu ms\n",
- s, (unsigned long long) GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT.rel_value);
+ "Timeout rescheduled for session %p set to %s\n",
+ s,
+ GNUNET_STRINGS_relative_time_to_string (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT,
+ GNUNET_YES));
}
s->timeout_task = GNUNET_SCHEDULER_NO_TASK;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Timeout stopped for session %p canceled\n",
- s, (unsigned long long) GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT.rel_value);
+ s);
}
}
"ADVERTISED-PORT", &aport)) &&
(aport > 65535)))
{
- LOG (GNUNET_ERROR_TYPE_ERROR,
+ LOG (GNUNET_ERROR_TYPE_ERROR,
_
("Require valid port number for service `%s' in configuration!\n"),
"transport-tcp");
myoptions = 0;
plugin = GNUNET_malloc (sizeof (struct Plugin));
- plugin->sessionmap = GNUNET_CONTAINER_multihashmap_create (max_connections, GNUNET_YES);
+ plugin->sessionmap = GNUNET_CONTAINER_multipeermap_create (max_connections, GNUNET_YES);
plugin->max_connections = max_connections;
plugin->cur_connections = 0;
plugin->open_port = bport;
{
for (ret = ret_s-1; ret >= 0; ret--)
LOG (GNUNET_ERROR_TYPE_INFO,
- "Binding to address `%s'\n",
+ "Binding to address `%s'\n",
GNUNET_a2s (addrs[ret], addrlens[ret]));
plugin->nat =
GNUNET_NAT_register (env->cfg, GNUNET_YES, aport, (unsigned int) ret_s,
GNUNET_SERVER_add_handlers (plugin->server, plugin->handlers);
GNUNET_SERVER_disconnect_notify (plugin->server, &disconnect_notify, plugin);
- plugin->nat_wait_conns = GNUNET_CONTAINER_multihashmap_create (16, GNUNET_YES);
+ plugin->nat_wait_conns = GNUNET_CONTAINER_multipeermap_create (16, GNUNET_YES);
if (bport != 0)
- LOG (GNUNET_ERROR_TYPE_INFO,
+ LOG (GNUNET_ERROR_TYPE_INFO,
_("TCP transport listening on port %llu\n"), bport);
else
- LOG (GNUNET_ERROR_TYPE_INFO,
+ LOG (GNUNET_ERROR_TYPE_INFO,
_
("TCP transport not listening on any port (client only)\n"));
if (aport != bport)
- LOG (GNUNET_ERROR_TYPE_INFO,
+ LOG (GNUNET_ERROR_TYPE_INFO,
_
("TCP transport advertises itself as being on port %llu\n"),
aport);
LOG (GNUNET_ERROR_TYPE_DEBUG, "Shutting down TCP plugin\n");
/* Removing leftover sessions */
- GNUNET_CONTAINER_multihashmap_iterate(plugin->sessionmap, &session_disconnect_it, NULL);
+ GNUNET_CONTAINER_multipeermap_iterate(plugin->sessionmap, &session_disconnect_it, NULL);
/* Removing leftover NAT sessions */
- GNUNET_CONTAINER_multihashmap_iterate(plugin->nat_wait_conns, &session_disconnect_it, NULL);
+ GNUNET_CONTAINER_multipeermap_iterate(plugin->nat_wait_conns, &session_disconnect_it, NULL);
next = ppc_dll_head;
for (cur = next; NULL != cur; cur = next)
{
next = cur->next;
GNUNET_CONTAINER_DLL_remove (ppc_dll_head, ppc_dll_tail, cur);
- GNUNET_RESOLVER_request_cancel (cur->resolver_handle);
+ if (NULL != cur->resolver_handle)
+ GNUNET_RESOLVER_request_cancel (cur->resolver_handle);
GNUNET_SCHEDULER_cancel (cur->timeout_task);
GNUNET_free (cur);
GNUNET_break (0);
GNUNET_CONNECTION_destroy (tcp_probe->sock);
GNUNET_free (tcp_probe);
}
- GNUNET_CONTAINER_multihashmap_destroy (plugin->nat_wait_conns);
- GNUNET_CONTAINER_multihashmap_destroy (plugin->sessionmap);
+ GNUNET_CONTAINER_multipeermap_destroy (plugin->nat_wait_conns);
+ GNUNET_CONTAINER_multipeermap_destroy (plugin->sessionmap);
GNUNET_free (plugin);
GNUNET_free (api);
return NULL;