h_addr is a define in in netdb.h
[oweals/gnunet.git] / src / transport / gnunet-service-transport.c
index 14ed7393dece4adf3b6c9a5d096d4be4e8c97dab..50cd367d5751bd911eb1528f2c8d70df3851692c 100644 (file)
@@ -70,7 +70,7 @@ static struct GNUNET_SERVER_Handle *GST_server;
 /**
  * Our public key.
  */
-struct GNUNET_CRYPTO_EccPublicKeyBinaryEncoded GST_my_public_key;
+struct GNUNET_CRYPTO_EccPublicKey GST_my_public_key;
 
 /**
  * Our private key.
@@ -153,7 +153,6 @@ process_payload (const struct GNUNET_PeerIdentity *peer,
       sizeof (struct InboundMessage) + msg_size;
   char buf[size] GNUNET_ALIGN;
 
-  ret = GNUNET_TIME_UNIT_ZERO;
   do_forward = GNUNET_SYSERR;
   ret = GST_neighbours_calculate_receive_delay (peer, msg_size, &do_forward);
 
@@ -171,6 +170,8 @@ process_payload (const struct GNUNET_PeerIdentity *peer,
     return ret;
   }
 
+  GST_ats_add_address ((struct GNUNET_HELLO_Address *) address, session);
+
   if (do_forward != GNUNET_YES)
     return ret;
   im = (struct InboundMessage *) buf;
@@ -245,14 +246,14 @@ GST_receive_callback (void *cls, const struct GNUNET_PeerIdentity *peer,
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG | GNUNET_ERROR_TYPE_BULK,
                 "Processing `%s' from `%s'\n", "PING",
                 (sender_address !=
-                 NULL) ? GST_plugins_a2s (&address) : "<inbound>");
+                 NULL) ? GST_plugins_a2s (&address) : TRANSPORT_SESSION_INBOUND_STRING);
     GST_validation_handle_ping (peer, message, &address, session);
     break;
   case GNUNET_MESSAGE_TYPE_TRANSPORT_PONG:
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG | GNUNET_ERROR_TYPE_BULK,
                 "Processing `%s' from `%s'\n", "PONG",
                 (sender_address !=
-                 NULL) ? GST_plugins_a2s (&address) : "<inbound>");
+                 NULL) ? GST_plugins_a2s (&address) : TRANSPORT_SESSION_INBOUND_STRING);
     GST_validation_handle_pong (peer, message);
     break;
   case GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_CONNECT:
@@ -284,8 +285,9 @@ GST_receive_callback (void *cls, const struct GNUNET_PeerIdentity *peer,
   }
 end:
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Allowing receive from peer %s to continue in %llu ms\n",
-              GNUNET_i2s (peer), (unsigned long long) ret.rel_value);
+              "Allowing receive from peer %s to continue in %s\n",
+              GNUNET_i2s (peer), 
+             GNUNET_STRINGS_relative_time_to_string (ret, GNUNET_YES));
   return ret;
 }
 
@@ -400,8 +402,8 @@ plugin_env_address_to_type (void *cls,
  * @param session the session
  */
 void
-GST_ats_add_address (struct GNUNET_HELLO_Address *address,
-                                                void *session)
+GST_ats_add_address (const struct GNUNET_HELLO_Address *address,
+                                                                                struct Session *session)
 {
   struct GNUNET_TRANSPORT_PluginFunctions *papi;
        struct GNUNET_ATS_Information ats;
@@ -420,7 +422,10 @@ GST_ats_add_address (struct GNUNET_HELLO_Address *address,
        return;
   }
 
-       net = papi->get_network (NULL, session);
+  if (GNUNET_YES == GNUNET_ATS_session_known (GST_ats, address, session))
+       return;
+
+       net = papi->get_network (NULL, (void *) session);
   if (GNUNET_ATS_NET_UNSPECIFIED == net)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -458,6 +463,10 @@ GST_ats_update_metrics (const struct GNUNET_PeerIdentity *peer,
                        uint32_t ats_count)
 {
        struct GNUNET_ATS_Information *ats_new;
+
+  if (GNUNET_NO == GNUNET_ATS_session_known (GST_ats, address, session))
+       return;
+
        /* Call to manipulation to manipulate ATS information */
        ats_new = GST_manipulation_manipulate_metrics (peer, address, session, ats, ats_count);
        if (NULL == ats_new)
@@ -709,7 +718,7 @@ shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
   }
   if (NULL != GST_my_private_key)
   {
-    GNUNET_CRYPTO_ecc_key_free (GST_my_private_key);
+    GNUNET_free (GST_my_private_key);
     GST_my_private_key = NULL;
   }
   GST_server = NULL;
@@ -765,6 +774,9 @@ run (void *cls, struct GNUNET_SERVER_Handle *server,
                       &GST_my_identity.hashPubKey);
   GNUNET_assert (NULL != GST_my_private_key);
 
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+              "My identity is `%4s'\n", GNUNET_i2s (&GST_my_identity));
+
   GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &shutdown_task,
                                 NULL);
   if (NULL == GST_peerinfo)
@@ -777,7 +789,6 @@ run (void *cls, struct GNUNET_SERVER_Handle *server,
 
   max_fd_rlimit = 0;
   max_fd_cfg = 0;
-  max_fd = 0;
 #if HAVE_GETRLIMIT
   struct rlimit r_file;
   if (0 == getrlimit (RLIMIT_NOFILE, &r_file))