From: Christian Grothoff Date: Fri, 25 Nov 2011 15:48:13 +0000 (+0000) Subject: LRN: I'm tired of seeing something like "ATS tells us to switch to address X-Git-Tag: initial-import-from-subversion-38251~15800 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=4eef01098baccf1135faa37a148035a5a42bc774;p=oweals%2Fgnunet.git LRN: I'm tired of seeing something like "ATS tells us to switch to address '(null)' session 0x497198 for peer `IIH1' in state `S_NOT_CONNECTED'", so i wrote this. - From what i see in the logs, '(null)'s are mostly caused by 0-byte long addresses. I'm not sure whether it is a bug, or a feature (but then, why would ATS tell us to switch to a 0-byte long address?). CG: for inbound connections, ATS tells us to switch to a 0-byte long address (since there is no address) but at the same time gives us a 'struct Session' to use as well. So 0-byte addresses really mean 'inbound' connections. --- diff --git a/src/transport/gnunet-service-transport_plugins.c b/src/transport/gnunet-service-transport_plugins.c index 9f6961919..e3dd3b26b 100644 --- a/src/transport/gnunet-service-transport_plugins.c +++ b/src/transport/gnunet-service-transport_plugins.c @@ -203,12 +203,19 @@ const char * GST_plugins_a2s (const struct GNUNET_HELLO_Address *address) { struct GNUNET_TRANSPORT_PluginFunctions *api; + static char unable_to_show[1024]; if (address == NULL) return ""; api = GST_plugins_find (address->transport_name); if ((api == NULL) || (address->address_length == 0) || (address->address == NULL)) - return NULL; + { + snprintf (unable_to_show, 1024, + "", + address->address_length, address, address->transport_name); + unable_to_show[1023] = '\0'; + return unable_to_show; + } return api->address_to_string (NULL, address->address, address->address_length); }