if (s->client_put_paused == GNUNET_YES)
{
-#if VERBOSE_CLIENT
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, s->plugin->name,
"Client: %X was suspended, unpausing\n", s->client_put);
-#endif
s->client_put_paused = GNUNET_NO;
curl_easy_pause (s->client_put, CURLPAUSE_CONT);
}
if (GNUNET_TIME_absolute_get ().abs_value < s->next_receive.abs_value)
{
-#if VERBOSE_CLIENT
struct Plugin *plugin = s->plugin;
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
"Client: peer `%s' address `%s' next read delayed for %llu ms\n",
GNUNET_i2s (&s->target), GNUNET_a2s (s->addr, s->addrlen),
delay);
-#endif
}
}
struct Session *s = cls;
struct GNUNET_TIME_Absolute now;
size_t len = size * nmemb;
-
-
-
-
-#if VERBOSE_CLIENT
struct Plugin *plugin = s->plugin;
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
"Client: Received %Zu bytes from peer `%s'\n", len,
GNUNET_i2s (&s->target));
-#endif
-
now = GNUNET_TIME_absolute_get ();
if (now.abs_value < s->next_receive.abs_value)
{
struct GNUNET_TIME_Absolute now = GNUNET_TIME_absolute_get ();
struct GNUNET_TIME_Relative delta =
GNUNET_TIME_absolute_get_difference (now, s->next_receive);
-#if DEBUG_CLIENT
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
"Client: %X No inbound bandwidth available! Next read was delayed for %llu ms\n",
s->client_get, delta.rel_value);
-#endif
if (s->recv_wakeup_task != GNUNET_SCHEDULER_NO_TASK)
{
GNUNET_SCHEDULER_cancel (s->recv_wakeup_task);
client_send_cb (void *stream, size_t size, size_t nmemb, void *cls)
{
struct Session *s = cls;
-
-#if VERBOSE_CLIENT
struct Plugin *plugin = s->plugin;
-#endif
size_t bytes_sent = 0;
size_t len;
if (msg == NULL)
{
-#if VERBOSE_CLIENT
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
"Client: %X Nothing to send! Suspending PUT handle!\n",
s->client_put);
-#endif
s->client_put_paused = GNUNET_YES;
return CURL_READFUNC_PAUSE;
}
if (msg->pos == msg->size)
{
-#if VERBOSE_CLIENT
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
"Client: %X Message with %u bytes sent, removing message from queue\n",
s->client_put, msg->size, msg->pos);
-#endif
/* Calling transmit continuation */
if (NULL != msg->transmit_cont)
msg->transmit_cont (msg->transmit_cont_cls, &s->target, GNUNET_OK);
char *url;
CURLMcode mret;
-#if VERBOSE_CLIENT
-#endif
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
"Initiating outbound session peer `%s'\n",
GNUNET_i2s (&s->target));
-
-
s->inbound = GNUNET_NO;
-
plugin->last_tag++;
/* create url */
GNUNET_asprintf (&url, "%s%s;%u",
#include "gnunet_transport_plugin.h"
#include "transport.h"
-#define DEBUG_TCP GNUNET_EXTRA_LOGGING
-
-#define DEBUG_TCP_NAT GNUNET_EXTRA_LOGGING
-
/**
* How long until we give up on establishing an NAT connection?
plugin = session->plugin;
if (buf == NULL)
{
-#if DEBUG_TCP
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, "tcp",
"Timeout trying to transmit to peer `%4s', discarding message queue.\n",
GNUNET_i2s (&session->target));
-#endif
/* timeout; cancel all messages that have already expired */
hd = NULL;
tl = NULL;
{
GNUNET_CONTAINER_DLL_remove (session->pending_messages_head,
session->pending_messages_tail, pos);
-#if DEBUG_TCP
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, "tcp",
"Failed to transmit %u byte message to `%4s'.\n",
pos->message_size, GNUNET_i2s (&session->target));
-#endif
ret += pos->message_size;
GNUNET_CONTAINER_DLL_insert_after (hd, tl, tl, pos);
}
}
GNUNET_assert (hd == NULL);
GNUNET_assert (tl == NULL);
-#if DEBUG_TCP > 1
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, "tcp", "Transmitting %u bytes\n",
ret);
-#endif
GNUNET_STATISTICS_update (plugin->env->stats,
gettext_noop ("# bytes currently in TCP buffers"),
-(int64_t) ret, GNUNET_NO);
while (NULL != (pm = session->pending_messages_head))
{
-#if DEBUG_TCP
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, "tcp",
pm->transmit_cont !=
NULL ? "Could not deliver message to `%4s'.\n" :
"Could not deliver message to `%4s', notifying.\n",
GNUNET_i2s (&session->target));
-#endif
GNUNET_STATISTICS_update (session->plugin->env->stats,
gettext_noop ("# bytes currently in TCP buffers"),
-(int64_t) pm->message_size, GNUNET_NO);
GNUNET_CONTAINER_multihashmap_contains (plugin->nat_wait_conns,
&address->peer.hashPubKey)))
{
-#if DEBUG_TCP_NAT
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, "tcp",
_("Found valid IPv4 NAT address (creating session)!\n"));
-#endif
session = create_session (plugin, &address->peer, NULL, GNUNET_YES);
session->addrlen = 0;
session->addr = NULL;
sa = GNUNET_CONNECTION_create_from_sockaddr (af, sb, sbs);
if (sa == NULL)
{
-#if DEBUG_TCP
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, "tcp",
"Failed to create connection to `%4s' at `%s'\n",
GNUNET_i2s (&session->target), GNUNET_a2s (sb, sbs));
-#endif
return NULL;
}
plugin->max_connections--;
session->client = client;
session->last_activity = GNUNET_TIME_absolute_get ();
session->inbound = GNUNET_NO;
-
-#if DEBUG_TCP_NAT
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, "tcp",
"Found address `%s' for incoming connection\n",
GNUNET_a2s (vaddr, alen));
-#endif
switch (((const struct sockaddr *) vaddr)->sa_family)
{
case AF_INET:
}
else
{
-#if DEBUG_TCP
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, "tcp",
"Did not obtain TCP socket address for incoming connection\n");
-#endif
}
GNUNET_CONTAINER_multihashmap_put(plugin->sessionmap, &wm->clientIdentity.hashPubKey, session, GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
inc_sessions (plugin, session, __LINE__);
}
else
{
-#if DEBUG_TCP
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, "tcp",
"Throttling receiving from `%s' for %llu ms\n",
GNUNET_i2s (&session->target),
(unsigned long long) delay.rel_value);
-#endif
GNUNET_SERVER_disable_receive_done_warning (client);
session->receive_delay_task =
GNUNET_SCHEDULER_add_delayed (delay, &delayed_done, session);
session = lookup_session_by_client (plugin, client);
if (session == NULL)
return; /* unknown, nothing to do */
-#if DEBUG_TCP
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, "tcp",
"Destroying session of `%4s' with %s due to network-level disconnect.\n",
GNUNET_i2s (&session->target),
session->addr,
session->addrlen) :
"*");
-#endif
GNUNET_STATISTICS_update (session->plugin->env->stats,
gettext_noop
("# network-level TCP disconnect events"), 1,
struct UDPMessageWrapper *udpw;
struct UDPMessageWrapper *next;
-#if DEBUG_UDP
LOG (GNUNET_ERROR_TYPE_DEBUG,
"Session %p to peer `%s' address ended \n",
s,
GNUNET_i2s (&s->target),
GNUNET_a2s (s->sock_addr, s->addrlen));
-#endif
-
if (s->frag_ctx != NULL)
{
GNUNET_FRAGMENT_context_destroy(s->frag_ctx->frag);
GNUNET_assert (plugin != NULL);
GNUNET_assert (target != NULL);
-#if DEBUG_UDP
LOG (GNUNET_ERROR_TYPE_DEBUG,
"Disconnecting from peer `%s'\n", GNUNET_i2s (target));
-#endif
/* Clean up sessions */
GNUNET_CONTAINER_multihashmap_get_multiple (plugin->sessions, &target->hashPubKey, &disconnect_and_free_it, plugin);
}
GNUNET_break (0);
return;
}
-#if DEBUG_UDP
LOG (GNUNET_ERROR_TYPE_DEBUG,
"Received message with %u bytes from peer `%s' at `%s'\n",
(unsigned int) ntohs (msg->header.size), GNUNET_i2s (&msg->sender),
GNUNET_a2s (sender_addr, sender_addr_len));
-#endif
struct GNUNET_HELLO_Address * address = GNUNET_HELLO_address_allocate(&msg->sender, "udp", arg, args);
s = udp_plugin_get_session(plugin, address);
if (s->flow_delay_for_other_peer.rel_value <= UINT32_MAX)
delay = s->flow_delay_for_other_peer.rel_value;
-#if DEBUG_UDP
LOG (GNUNET_ERROR_TYPE_DEBUG,
"Sending ACK to `%s' including delay of %u ms\n",
GNUNET_a2s (rc->src_addr,
AF_INET) ? sizeof (struct sockaddr_in) : sizeof (struct
sockaddr_in6)),
delay);
-#endif
udpw = GNUNET_malloc (sizeof (struct UDPMessageWrapper) + msize);
udpw->cont = NULL;
udpw->cont_cls = NULL;
if (GNUNET_OK != GNUNET_FRAGMENT_process_ack (s->frag_ctx->frag, ack))
{
-#if DEBUG_UDP
LOG (GNUNET_ERROR_TYPE_DEBUG,
"UDP processes %u-byte acknowledgement from `%s' at `%s'\n",
(unsigned int) ntohs (msg->size), GNUNET_i2s (&udp_ack->sender),
GNUNET_a2s ((const struct sockaddr *) addr, fromlen));
-#endif
return;
}
-#if DEBUG_UDP
LOG (GNUNET_ERROR_TYPE_DEBUG,
"FULL MESSAGE ACKed\n",
(unsigned int) ntohs (msg->size), GNUNET_i2s (&udp_ack->sender),
GNUNET_a2s ((const struct sockaddr *) addr, fromlen));
-#endif
s->last_expected_delay = GNUNET_FRAGMENT_context_destroy (s->frag_ctx->frag);
struct UDPMessageWrapper * udpw = NULL;
frc.addr = (const struct sockaddr *) addr;
frc.addr_len = fromlen;
-#if DEBUG_UDP
LOG (GNUNET_ERROR_TYPE_DEBUG, "UDP processes %u-byte fragment from `%s'\n",
(unsigned int) ntohs (msg->size),
GNUNET_a2s ((const struct sockaddr *) addr, fromlen));
-#endif
-
/* Lookup existing receive context for this address */
GNUNET_CONTAINER_heap_iterate (plugin->defrag_ctxs,
&find_receive_context,
GNUNET_CONTAINER_heap_insert (plugin->defrag_ctxs, d_ctx,
(GNUNET_CONTAINER_HeapCostType)
now.abs_value);
-#if DEBUG_UDP
LOG (GNUNET_ERROR_TYPE_DEBUG, "Created new defragmentation context for %u-byte fragment from `%s'\n",
(unsigned int) ntohs (msg->size),
GNUNET_a2s ((const struct sockaddr *) addr, fromlen));
-#endif
}
else
{
-#if DEBUG_UDP
LOG (GNUNET_ERROR_TYPE_DEBUG, "Found existing defragmentation context for %u-byte fragment from `%s'\n",
(unsigned int) ntohs (msg->size),
GNUNET_a2s ((const struct sockaddr *) addr, fromlen));
-#endif
}
if (GNUNET_OK == GNUNET_DEFRAGMENT_process_fragment (d_ctx->defrag, msg))
udpw->cont (udpw->cont_cls, &udpw->session->target, GNUNET_SYSERR);
if (udpw->frag_ctx != NULL)
{
-#if DEBUG_UDP
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Fragmented message for peer `%s' with size %u timed out\n",
GNUNET_i2s(&udpw->session->target), udpw->frag_ctx->bytes_to_send);
-#endif
udpw->session->last_expected_delay = GNUNET_FRAGMENT_context_destroy(udpw->frag_ctx->frag);
GNUNET_free (udpw->frag_ctx);
udpw->session->frag_ctx = NULL;
}
else
{
-#if DEBUG_UDP
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Message for peer `%s' with size %u timed out\n",
GNUNET_i2s(&udpw->session->target), udpw->msg_size);
-#endif
}
if (sock == plugin->sockv4)
serverAddrv6->sin6_port = htons (plugin->port);
addrlen = sizeof (struct sockaddr_in6);
serverAddr = (struct sockaddr *) serverAddrv6;
-#if DEBUG_UDP
LOG (GNUNET_ERROR_TYPE_DEBUG, "Binding to IPv6 port %d\n",
ntohs (serverAddrv6->sin6_port));
-#endif
tries = 0;
while (GNUNET_NETWORK_socket_bind (plugin->sockv6, serverAddr, addrlen) !=
GNUNET_OK)
{
serverAddrv6->sin6_port = htons (GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_STRONG, 33537) + 32000); /* Find a good, non-root port */
-#if DEBUG_UDP
LOG (GNUNET_ERROR_TYPE_DEBUG,
"IPv6 Binding failed, trying new port %d\n",
ntohs (serverAddrv6->sin6_port));
-#endif
tries++;
if (tries > 10)
{
}
if (plugin->sockv6 != NULL)
{
-#if DEBUG_UDP
LOG (GNUNET_ERROR_TYPE_DEBUG,
"IPv6 socket created on port %d\n",
ntohs (serverAddrv6->sin6_port));
-#endif
addrs[sockets_created] = (struct sockaddr *) serverAddrv6;
addrlens[sockets_created] = sizeof (struct sockaddr_in6);
sockets_created++;
addrlen = sizeof (struct sockaddr_in);
serverAddr = (struct sockaddr *) serverAddrv4;
-#if DEBUG_UDP
LOG (GNUNET_ERROR_TYPE_DEBUG, "Binding to IPv4 port %d\n",
ntohs (serverAddrv4->sin_port));
-#endif
tries = 0;
while (GNUNET_NETWORK_socket_bind (plugin->sockv4, serverAddr, addrlen) !=
GNUNET_OK)
{
serverAddrv4->sin_port = htons (GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_STRONG, 33537) + 32000); /* Find a good, non-root port */
-#if DEBUG_UDP
LOG (GNUNET_ERROR_TYPE_DEBUG, "IPv4 Binding failed, trying new port %d\n",
ntohs (serverAddrv4->sin_port));
-#endif
tries++;
if (tries > 10)
{
}
/* Clean up sessions */
-#if DEBUG_UDP
LOG (GNUNET_ERROR_TYPE_DEBUG,
"Cleaning up sessions\n");
-#endif
GNUNET_CONTAINER_multihashmap_iterate (plugin->sessions, &disconnect_and_free_it, plugin);
GNUNET_CONTAINER_multihashmap_destroy (plugin->sessions);
#include "gnunet_transport_plugin.h"
#include "transport.h"
-#define DEBUG_UNIX GNUNET_EXTRALOGGING
-#define DETAILS GNUNET_NO
-
#define MAX_PROBES 20
/*
struct Plugin *plugin = cls;
GNUNET_assert (plugin != NULL);
-#if DEBUG_UNIX
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Deleting session for peer `%s' `%s' \n", GNUNET_i2s (&s->target), s->addr);
-#endif
-
plugin->env->session_end (plugin->env->cls, &s->target, s);
GNUNET_assert (GNUNET_YES ==
if (send_handle == NULL)
{
-#if DEBUG_UNIX
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"unix_real_send with send_handle NULL!\n");
-#endif
/* failed to open send socket for AF */
if (cont != NULL)
cont (cont_cls, target, GNUNET_SYSERR);
}
if ((addr == NULL) || (addrlen == 0))
{
-#if DEBUG_UNIX
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"unix_real_send called without address, returning!\n");
-#endif
if (cont != NULL)
cont (cont_cls, target, GNUNET_SYSERR);
return 0; /* Can never send if we don't have an address!! */
}
}
}
-
-#if DEBUG_UNIX
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"UNIX transmit %u-byte message to %s (%d: %s)\n",
(unsigned int) msgbuf_size, GNUNET_a2s (sb, sbs), (int) sent,
(sent < 0) ? STRERROR (errno) : "ok");
-#endif
/* Calling continuation */
if (cont != NULL)
{
struct gsi_ctx *gsi = cls;
struct Session *s = value;
-#if DEBUG_UNIX
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Comparing session %s %s\n", gsi->address, s->addr);
-#endif
if ((gsi->addrlen == s->addrlen) &&
(0 == memcmp (gsi->address, s->addr, s->addrlen)))
{
GNUNET_CONTAINER_multihashmap_get_multiple (plugin->session_map, &address->peer.hashPubKey, &get_session_it, &gsi);
if (gsi.res != NULL)
{
-#if DEBUG_UNIX
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Found existing session\n");
-#endif
return gsi.res;
}
"# UNIX sessions active",
GNUNET_CONTAINER_multihashmap_size(plugin->session_map),
GNUNET_NO);
-
-#if DEBUG_UNIX
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Creating new session\n");
-#endif
-
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Creating new session\n");
return s;
}
GNUNET_STATISTICS_set (plugin->env->stats,"# UNIX bytes in send queue",
plugin->bytes_in_queue, GNUNET_NO);
-#if DEBUG_UNIX
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Sent %d bytes to `%s'\n", ssize,
(char *) session->addr);
-#endif
-
if (plugin->with_ws == GNUNET_NO)
{
if (plugin->select_task != GNUNET_SCHEDULER_NO_TASK)
GNUNET_assert (fromlen >= sizeof (struct sockaddr_un));
-#if DEBUG_UNIX
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received message from %s\n",
un->sun_path);
-#endif
plugin->env->receive (plugin->env->cls, sender, currhdr,
(const struct GNUNET_ATS_Information *) &ats, 2,
NULL, un->sun_path, strlen (un->sun_path) + 1);
#if LINUX
un.sun_path[0] = '/';
#endif
-#if DEBUG_UNIX
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Read %d bytes from socket %s\n", ret,
&un.sun_path[0]);
-#endif
}
GNUNET_assert (AF_UNIX == (un.sun_family));
plugin->unix_sock.desc = NULL;
return GNUNET_SYSERR;
}
-#if DEBUG_UNIX
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, "unix", "Bound to `%s'\n",
&un.sun_path[0]);
-#endif
plugin->rs = GNUNET_NETWORK_fdset_create ();
plugin->ws = GNUNET_NETWORK_fdset_create ();
GNUNET_NETWORK_fdset_zero (plugin->rs);
static int
unix_check_address (void *cls, const void *addr, size_t addrlen)
{
-
-#if DEBUG_UNIX
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Informing transport service about my address `%s'\n",
(char *) addr);
-#endif
return GNUNET_OK;
}