/*
This file is part of GNUnet
- (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 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
*/
#include "platform.h"
-#include "gnunet_common.h"
-#include "gnunet_server_lib.h"
+#include "gnunet_util_lib.h"
#include "gnunet_statistics_service.h"
#include "gnunet_transport_plugin.h"
#include "gnunet_nat_lib.h"
#include "plugin_transport_http_common.h"
#include <microhttpd.h>
+
+
#if BUILD_HTTPS
+#define PLUGIN_NAME "https_server"
#define LIBGNUNET_PLUGIN_TRANSPORT_INIT libgnunet_plugin_transport_https_server_init
#define LIBGNUNET_PLUGIN_TRANSPORT_DONE libgnunet_plugin_transport_https_server_done
#else
+#define PLUGIN_NAME "http_server"
#define LIBGNUNET_PLUGIN_TRANSPORT_INIT libgnunet_plugin_transport_http_server_init
#define LIBGNUNET_PLUGIN_TRANSPORT_DONE libgnunet_plugin_transport_http_server_done
#endif
http_server_plugin_address_suggested (void *cls, const void *addr,
size_t addrlen)
{
- struct HTTP_Server_Plugin *plugin = cls;
- struct HttpAddressWrapper *next;
- struct HttpAddressWrapper *pos;
-
-
- if ((NULL != plugin->ext_addr) &&
- GNUNET_YES == (http_common_cmp_addresses (addr, addrlen,
- plugin->ext_addr, plugin->ext_addr_len)))
- return GNUNET_OK;
-
- next = plugin->addr_head;
- while (NULL != (pos = next))
- {
- next = pos->next;
- if (GNUNET_YES == (http_common_cmp_addresses(addr,
- addrlen,
- pos->address,
- pos->addrlen)))
- return GNUNET_OK;
-
- }
-
- return GNUNET_NO;
+ struct HttpAddressWrapper *next;
+ struct HttpAddressWrapper *pos;
+ const struct HttpAddress *haddr = addr;
+
+ if ((NULL != p->ext_addr) &&
+ GNUNET_YES == (http_common_cmp_addresses (addr, addrlen,
+ p->ext_addr, p->ext_addr_len)))
+ {
+ /* Checking HTTP_OPTIONS_VERIFY_CERTIFICATE option for external hostname */
+ if ((ntohl(haddr->options) & HTTP_OPTIONS_VERIFY_CERTIFICATE) !=
+ (p->options & HTTP_OPTIONS_VERIFY_CERTIFICATE))
+ return GNUNET_NO; /* VERIFY option not set as required! */
+ return GNUNET_OK;
+ }
+
+ next = p->addr_head;
+ while (NULL != (pos = next))
+ {
+ next = pos->next;
+ if (GNUNET_YES == (http_common_cmp_addresses(addr,
+ addrlen,
+ pos->address,
+ pos->addrlen)))
+ return GNUNET_OK;
+
+ }
+ return GNUNET_NO;
}
return GNUNET_OK;
}
+
+
+/**
+ * Tell MHD that the connection should timeout after @a to seconds.
+ *
+ * @param plugin our plugin
+ * @param s session for which the timeout changes
+ * @param to timeout in seconds
+ */
static void
-server_mhd_connection_timeout (struct HTTP_Server_Plugin *plugin, struct Session *s, int to)
+server_mhd_connection_timeout (struct HTTP_Server_Plugin *plugin,
+ struct Session *s,
+ unsigned int to)
{
#if MHD_VERSION >= 0x00090E00
/* Setting timeouts for other connections */
- if (s->server_recv != NULL)
- {
- GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
- "Setting timeout for %p to %u sec.\n", s->server_recv, to);
- MHD_set_connection_option (s->server_recv->mhd_conn,
- MHD_CONNECTION_OPTION_TIMEOUT,
- to);
- server_reschedule (plugin, s->server_recv->mhd_daemon, GNUNET_NO);
- }
- if (s->server_send != NULL)
- {
- GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
- "Setting timeout for %p to %u sec.\n", s->server_send, to);
- MHD_set_connection_option (s->server_send->mhd_conn,
- MHD_CONNECTION_OPTION_TIMEOUT,
- to);
- server_reschedule (plugin, s->server_send->mhd_daemon, GNUNET_NO);
- }
+ if (NULL != s->server_recv)
+ {
+ GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
+ "Setting timeout for %p to %u sec.\n",
+ s->server_recv, to);
+ MHD_set_connection_option (s->server_recv->mhd_conn,
+ MHD_CONNECTION_OPTION_TIMEOUT,
+ to);
+ server_reschedule (plugin, s->server_recv->mhd_daemon, GNUNET_NO);
+ }
+ if (NULL != s->server_send)
+ {
+ GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
+ "Setting timeout for %p to %u sec.\n",
+ s->server_send, to);
+ MHD_set_connection_option (s->server_send->mhd_conn,
+ MHD_CONNECTION_OPTION_TIMEOUT,
+ to);
+ server_reschedule (plugin, s->server_send->mhd_daemon, GNUNET_NO);
+ }
#endif
}
*/
static int
-server_parse_url (struct HTTP_Server_Plugin *plugin, const char * url, struct GNUNET_PeerIdentity * target, uint32_t *tag)
+server_parse_url (struct HTTP_Server_Plugin *plugin,
+ const char *url,
+ struct GNUNET_PeerIdentity *target,
+ uint32_t *tag)
{
char * tag_start = NULL;
char * tag_end = NULL;
char * target_start = NULL;
char * separator = NULL;
- char hash[plugin->peer_id_length+1];
- int hash_length;
+ unsigned int hash_length;
unsigned long int ctag;
/* URL parsing
if (DEBUG_URL_PARSE) GNUNET_break (0);
return GNUNET_SYSERR;
}
- memcpy (hash, target_start, hash_length);
- hash[hash_length] = '\0';
-
- if (GNUNET_OK != GNUNET_CRYPTO_hash_from_string ((const char *) hash, &(target->hashPubKey)))
- {
+ if (GNUNET_OK !=
+ GNUNET_CRYPTO_eddsa_public_key_from_string (target_start,
+ hash_length,
+ &target->public_key))
+ {
/* hash conversion failed */
if (DEBUG_URL_PARSE) GNUNET_break (0);
return GNUNET_SYSERR;
}
-
- GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
- "Found target `%s' in url\n", GNUNET_h2s_full(&target->hashPubKey));
+ GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG,
+ plugin->name,
+ "Found target `%s' in URL\n",
+ GNUNET_i2s_full (target));
return GNUNET_OK;
}
struct ServerConnection *sc = NULL;
const union MHD_ConnectionInfo *conn_info;
struct GNUNET_ATS_Information ats;
-
struct HttpAddress *addr;
size_t addr_len;
-
struct GNUNET_PeerIdentity target;
uint32_t tag = 0;
int direction = GNUNET_SYSERR;
- int to;
+ unsigned int to;
conn_info = MHD_get_connection_info (mhd_connection,
MHD_CONNECTION_INFO_CLIENT_ADDRESS);
ats.type = htonl (GNUNET_ATS_NET_WAN);
return NULL;
}
- GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
- "Creating new session for peer `%s' connecting from `%s'\n",
- GNUNET_i2s (&target),
- http_common_plugin_address_to_string (NULL, p->protocol, addr, addr_len));
s = GNUNET_malloc (sizeof (struct Session));
memcpy (&s->target, &target, sizeof (struct GNUNET_PeerIdentity));
s->connect_in_progress = GNUNET_YES;
server_start_session_timeout(s);
GNUNET_CONTAINER_DLL_insert (plugin->head, plugin->tail, s);
+
+ GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
+ "Creating new session %p for peer `%s' connecting from `%s'\n",
+ s, GNUNET_i2s (&target),
+ http_common_plugin_address_to_string (NULL, p->protocol, addr, addr_len));
}
sc = GNUNET_malloc (sizeof (struct ServerConnection));
if (conn_info->client_addr->sa_family == AF_INET)
s->server_recv = sc;
if ((NULL != s->server_send) && (NULL != s->server_recv))
+ {
s->connect_in_progress = GNUNET_NO; /* PUT and GET are connected */
+ plugin->env->session_start (NULL, &s->target, PLUGIN_NAME, NULL, 0 ,s, NULL, 0);
+ }
#if MHD_VERSION >= 0x00090E00
if ((NULL == s->server_recv) || (NULL == s->server_send))
{
- to = (HTTP_SERVER_NOT_VALIDATED_TIMEOUT.rel_value / 1000);
- MHD_set_connection_option (mhd_connection, MHD_CONNECTION_OPTION_TIMEOUT, to);
+ to = (HTTP_SERVER_NOT_VALIDATED_TIMEOUT.rel_value_us / 1000LL / 1000LL);
+ MHD_set_connection_option (mhd_connection,
+ MHD_CONNECTION_OPTION_TIMEOUT, to);
server_reschedule (plugin, sc->mhd_daemon, GNUNET_NO);
}
else
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
"Session %p for peer `%s' fully connected\n",
s, GNUNET_i2s (&target));
- to = (SERVER_SESSION_TIMEOUT.rel_value / 1000);
+ to = (SERVER_SESSION_TIMEOUT.rel_value_us / 1000LL / 1000LL);
server_mhd_connection_timeout (plugin, s, to);
}
delay = plugin->env->receive (plugin->env->cls,
&s->target,
message,
- s, s->addr, s->addrlen);
+ s, NULL, 0);
plugin->env->update_address_metrics (plugin->env->cls,
&s->target,
- s->addr,
- s->addrlen,
- s,
- &atsi, 1);
+ NULL, 0, s, &atsi, 1);
GNUNET_asprintf (&stat_txt, "# bytes received via %s_server", plugin->protocol);
GNUNET_STATISTICS_update (plugin->env->stats,
s->session_passed = GNUNET_YES;
s->next_receive = GNUNET_TIME_absolute_add (GNUNET_TIME_absolute_get (), delay);
- if (delay.rel_value > 0)
+ if (delay.rel_value_us > 0)
{
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
- "Peer `%s' address `%s' next read delayed for %llu ms\n",
+ "Peer `%s' address `%s' next read delayed for %s\n",
GNUNET_i2s (&s->target),
http_common_plugin_address_to_string (NULL, p->protocol, s->addr, s->addrlen),
- delay);
+ GNUNET_STRINGS_relative_time_to_string (delay,
+ GNUNET_YES));
}
server_reschedule_session_timeout (s);
return GNUNET_OK;
response = MHD_create_response_from_data (strlen ("Thank you!"),
"Thank you!",
MHD_NO, MHD_NO);
- res = MHD_queue_response (mhd_connection, MHD_HTTP_OK, response);
+ MHD_queue_response (mhd_connection, MHD_HTTP_OK, response);
MHD_destroy_response (response);
return MHD_YES;
}
response = MHD_create_response_from_data (strlen ("Thank you!"),
"Thank you!",
MHD_NO, MHD_NO);
- res = MHD_queue_response (mhd_connection, MHD_HTTP_OK, response);
+ MHD_queue_response (mhd_connection, MHD_HTTP_OK, response);
MHD_destroy_response (response);
return MHD_YES;
}
*upload_data_size);
struct GNUNET_TIME_Absolute now = GNUNET_TIME_absolute_get ();
- if ((s->next_receive.abs_value <= now.abs_value))
+ if ((s->next_receive.abs_value_us <= now.abs_value_us))
{
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
"PUT with %u bytes forwarded to MST\n",
}
GNUNET_SERVER_mst_receive (s->msg_tk, s, upload_data,
*upload_data_size, GNUNET_NO, GNUNET_NO);
-#if MHD_VERSION >= 0x00090E00
- server_mhd_connection_timeout (plugin, s, GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT.rel_value / 1000);
-#endif
+ server_mhd_connection_timeout (plugin, s,
+ GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT.rel_value_us / 1000LL / 1000LL);
(*upload_data_size) = 0;
}
else
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Session %p / Connection %p: no inbound bandwidth available! Next read was delayed by %llu ms\n",
- s, sc, now.abs_value - s->next_receive.abs_value);
+ "Session %p / Connection %p: no inbound bandwidth available! Next read was delayed by %s\n",
+ s, sc,
+ GNUNET_STRINGS_relative_time_to_string (GNUNET_TIME_absolute_get_duration (s->next_receive),
+ GNUNET_YES));
}
return MHD_YES;
}
{
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
- "SELECT Timeout changed from %llu to %llu\n",
+ "SELECT Timeout changed from %llu to %llu (ms)\n",
last_timeout, timeout);
last_timeout = timeout;
}
- if (timeout <= GNUNET_TIME_UNIT_SECONDS.rel_value)
- tv.rel_value = (uint64_t) timeout;
+ if (timeout <= GNUNET_TIME_UNIT_SECONDS.rel_value_us / 1000LL)
+ tv.rel_value_us = (uint64_t) timeout * 1000LL;
else
tv = GNUNET_TIME_UNIT_SECONDS;
}
* Load ssl certificate
*
* @param plugin the plugin
- * @return GNUNET_OK on success, GNUNET_SYSERR on failure
+ * @return #GNUNET_OK on success, #GNUNET_SYSERR on failure
*/
static int
server_load_certificate (struct HTTP_Server_Plugin *plugin)
{
int res = GNUNET_OK;
-
- char *sh;
char *key_file;
char *cert_file;
- /* Get crypto init string from config
- * If not present just use default values */
-
- if (GNUNET_OK !=
- GNUNET_CONFIGURATION_get_value_string (plugin->env->cfg,
- "PATHS",
- "SERVICEHOME",
- &sh))
- {
- GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
- "Failed to get servicehome!\n");
- return GNUNET_SYSERR;
- }
-
-
- if (GNUNET_OK ==
- GNUNET_CONFIGURATION_get_value_string (plugin->env->cfg,
- plugin->name,
- "CRYPTO_INIT",
- &plugin->crypto_init))
- GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
- "Using crypto init string `%s'\n",
- plugin->crypto_init);
- else
- GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
- "Using default crypto init string \n");
if (GNUNET_OK !=
GNUNET_CONFIGURATION_get_value_filename (plugin->env->cfg, plugin->name,
"KEY_FILE", &key_file))
{
- GNUNET_break (0);
- GNUNET_asprintf (&key_file, "%s/%s", sh, "https_key.key");
+ GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
+ plugin->name, "CERT_FILE");
+ return GNUNET_SYSERR;
}
-
-
if (GNUNET_OK !=
GNUNET_CONFIGURATION_get_value_filename (plugin->env->cfg, plugin->name,
"CERT_FILE", &cert_file))
{
- GNUNET_break (0);
- GNUNET_asprintf (&cert_file, "%s/%s", sh, "https_cert.crt");
+ GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
+ plugin->name, "CERT_FILE");
+ GNUNET_free (key_file);
+ return GNUNET_SYSERR;
}
- GNUNET_free (sh);
+ /* Get crypto init string from config. If not present, use
+ * default values */
+ if (GNUNET_OK ==
+ GNUNET_CONFIGURATION_get_value_string (plugin->env->cfg,
+ plugin->name,
+ "CRYPTO_INIT",
+ &plugin->crypto_init))
+ GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
+ "Using crypto init string `%s'\n",
+ plugin->crypto_init);
+ else
+ GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
+ "Using default crypto init string \n");
+
/* read key & certificates from file */
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Trying to loading TLS certificate from key-file `%s' cert-file`%s'\n",
if ((plugin->key == NULL) || (plugin->cert == NULL))
{
- GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
- _
- ("No usable TLS certificate found and creating one failed!\n"),
- "transport-https");
+ GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
+ plugin->name,
+ _("No usable TLS certificate found and creating one at `%s/%s' failed!\n"),
+ key_file, cert_file);
GNUNET_free (key_file);
GNUNET_free (cert_file);
server_start (struct HTTP_Server_Plugin *plugin)
{
unsigned int timeout;
+ char *msg;
GNUNET_assert (NULL != plugin);
#if BUILD_HTTPS
#if MHD_VERSION >= 0x00090E00
- timeout = HTTP_SERVER_NOT_VALIDATED_TIMEOUT.rel_value / 1000;
+ timeout = HTTP_SERVER_NOT_VALIDATED_TIMEOUT.rel_value_us / 1000LL / 1000LL;
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
"MHD can set timeout per connection! Default time out %u sec.\n",
timeout);
#else
- timeout = SERVER_SESSION_TIMEOUT.rel_value / 1000;
+ timeout = SERVER_SESSION_TIMEOUT.rel_value_us / 1000LL / 1000LL;
GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING, plugin->name,
"MHD cannot set timeout per connection! Default time out %u sec.\n",
timeout);
#endif
+
plugin->server_v4 = NULL;
if (plugin->use_ipv4 == GNUNET_YES)
{
&server_disconnect_cb, plugin,
MHD_OPTION_EXTERNAL_LOGGER,
server_log, NULL, MHD_OPTION_END);
+ if (plugin->server_v4 == NULL)
+ {
+ GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
+ "Failed to start %s IPv4 server component on port %u\n",
+ plugin->name, plugin->port);
+ }
+ else
+ server_reschedule (plugin, plugin->server_v4, GNUNET_NO);
}
+
+
plugin->server_v6 = NULL;
if (plugin->use_ipv6 == GNUNET_YES)
{
&server_disconnect_cb, plugin,
MHD_OPTION_EXTERNAL_LOGGER,
server_log, NULL, MHD_OPTION_END);
-
- }
-
- if ((plugin->use_ipv4 == GNUNET_YES) && (plugin->server_v4 == NULL))
- {
- GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
- "Failed to start %s IPv4 server component on port %u\n",
- plugin->name, plugin->port);
- return GNUNET_SYSERR;
+ if (plugin->server_v6 == NULL)
+ {
+ GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
+ "Failed to start %s IPv6 server component on port %u\n",
+ plugin->name, plugin->port);
+ }
+ else
+ server_reschedule (plugin, plugin->server_v6, GNUNET_NO);
}
- server_reschedule (plugin, plugin->server_v4, GNUNET_NO);
- if ((plugin->use_ipv6 == GNUNET_YES) && (plugin->server_v6 == NULL))
+ msg = "No";
+ if ((plugin->server_v6 == NULL) && (plugin->server_v4 == NULL))
{
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
- "Failed to start %s IPv6 server component on port %u\n",
- plugin->name, plugin->port);
+ "%s %s server component started on port %u\n",
+ msg, plugin->name, plugin->port);
+ sleep (10);
return GNUNET_SYSERR;
}
- server_reschedule (plugin, plugin->server_v6, GNUNET_NO);
+ else if ((plugin->server_v6 != NULL) && (plugin->server_v4 != NULL))
+ msg = "IPv4 and IPv6";
+ else if (plugin->server_v6 != NULL)
+ msg = "IPv6";
+ else if (plugin->server_v4 != NULL)
+ msg = "IPv4";
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
- "%s server component started on port %u\n", plugin->name,
- plugin->port);
+ "%s %s server component started on port %u\n",
+ msg, plugin->name, plugin->port);
return GNUNET_OK;
}
* Get valid server addresses
*
* @param plugin the plugin handle
- * @param serviceName the servicename
+ * @param service_name the servicename
* @param cfg configuration handle
* @param addrs addresses
* @param addr_lens address length
*/
static int
server_get_addresses (struct HTTP_Server_Plugin *plugin,
- const char *serviceName,
+ const char *service_name,
const struct GNUNET_CONFIGURATION_Handle *cfg,
struct sockaddr ***addrs, socklen_t ** addr_lens)
{
disablev6 = !plugin->use_ipv6;
port = 0;
- if (GNUNET_CONFIGURATION_have_value (cfg, serviceName, "PORT"))
+ if (GNUNET_CONFIGURATION_have_value (cfg, service_name, "PORT"))
{
GNUNET_break (GNUNET_OK ==
- GNUNET_CONFIGURATION_get_value_number (cfg, serviceName,
+ GNUNET_CONFIGURATION_get_value_number (cfg, service_name,
"PORT", &port));
if (port > 65535)
{
}
- if (GNUNET_CONFIGURATION_have_value (cfg, serviceName, "BINDTO"))
+ if (GNUNET_CONFIGURATION_have_value (cfg, service_name, "BINDTO"))
{
GNUNET_break (GNUNET_OK ==
- GNUNET_CONFIGURATION_get_value_string (cfg, serviceName,
+ GNUNET_CONFIGURATION_get_value_string (cfg, service_name,
"BINDTO", &hostname));
}
else
{
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
"Resolving `%s' since that is where `%s' will bind to.\n",
- hostname, serviceName);
+ hostname, service_name);
memset (&hints, 0, sizeof (struct addrinfo));
if (disablev6)
hints.ai_family = AF_INET;
plugin->max_connections);
- plugin->peer_id_length = strlen (GNUNET_h2s_full (&plugin->env->my_identity->hashPubKey));
+ plugin->peer_id_length = strlen (GNUNET_i2s_full (plugin->env->my_identity));
return GNUNET_OK;
}
s->timeout_task = GNUNET_SCHEDULER_NO_TASK;
GNUNET_log (TIMEOUT_LOG,
- "Session %p was idle for %llu ms, disconnecting\n",
- s, (unsigned long long) SERVER_SESSION_TIMEOUT.rel_value);
+ "Session %p was idle for %s, disconnecting\n",
+ s,
+ GNUNET_STRINGS_relative_time_to_string (SERVER_SESSION_TIMEOUT,
+ GNUNET_YES));
/* call session destroy function */
GNUNET_assert (GNUNET_OK == server_disconnect (s));
&server_session_timeout,
s);
GNUNET_log (TIMEOUT_LOG,
- "Timeout for session %p set to %llu ms\n",
- s, (unsigned long long) SERVER_SESSION_TIMEOUT.rel_value);
+ "Timeout for session %p set to %s\n",
+ s,
+ GNUNET_STRINGS_relative_time_to_string (SERVER_SESSION_TIMEOUT,
+ GNUNET_YES));
}
&server_session_timeout,
s);
GNUNET_log (TIMEOUT_LOG,
- "Timeout rescheduled for session %p set to %llu ms\n",
- s, (unsigned long long) SERVER_SESSION_TIMEOUT.rel_value);
+ "Timeout rescheduled for session %p set to %s\n",
+ s,
+ GNUNET_STRINGS_relative_time_to_string (SERVER_SESSION_TIMEOUT,
+ GNUNET_YES));
}
const void *addr,
size_t addrlen)
{
- return http_common_plugin_address_to_string (cls, p->protocol, addr, addrlen);
+#if BUILD_HTTPS
+ return http_common_plugin_address_to_string (cls, PLUGIN_NAME, addr, addrlen);
+#else
+ return http_common_plugin_address_to_string (cls, PLUGIN_NAME, addr, addrlen);
+#endif
+
}
+
/**
* Function obtain the network type for a session
*
* @param session the session
* @return the network type in HBO or GNUNET_SYSERR
*/
-int http_server_get_network (void *cls,
- void *session)
+static enum GNUNET_ATS_Network_Type
+http_server_get_network (void *cls,
+ struct Session *session)
{
- struct Session *s = (struct Session *) session;
- GNUNET_assert (NULL != s);
- return ntohl(s->ats_address_network_type);
+ GNUNET_assert (NULL != session);
+ return ntohl (session->ats_address_network_type);
}
+
/**
* Entry point for the plugin.
*
LIBGNUNET_PLUGIN_TRANSPORT_DONE (api);
return NULL;
}
-
return api;
}