REST: nothing triggers rest
[oweals/gnunet.git] / src / ats / ats_api_connectivity.c
index 1897e2783e21172d21fa06fd5194527bd9d65cb4..d1295d04d96644fefe82ed30867a4073ed148b96 100644 (file)
@@ -1,21 +1,21 @@
 /*
      This file is part of GNUnet.
-     Copyright (C) 2010-2015 GNUnet e.V.
+     Copyright (C) 2010-2016 GNUnet e.V.
 
-     GNUnet is free software; you can redistribute it and/or modify
-     it under the terms of the GNU General Public License as published
-     by the Free Software Foundation; either version 3, or (at your
-     option) any later version.
+     GNUnet is free software: you can redistribute it and/or modify it
+     under the terms of the GNU Affero General Public License as published
+     by the Free Software Foundation, either version 3 of the License,
+     or (at your option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
      WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-     General Public License for more details.
+     Affero General Public License for more details.
+    
+     You should have received a copy of the GNU Affero General Public License
+     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-     You should have received a copy of the GNU General Public License
-     along with GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-     Boston, MA 02110-1301, USA.
+     SPDX-License-Identifier: AGPL3.0-or-later
 */
 /**
  * @file ats/ats_api_connectivity.c
@@ -71,11 +71,6 @@ struct GNUNET_ATS_ConnectivityHandle
    */
   struct GNUNET_CONTAINER_MultiPeerMap *sug_requests;
 
-  /**
-   * Connection to ATS service.
-   */
-  struct GNUNET_CLIENT_Connection *client;
-
   /**
    * Message queue for sending requests to the ATS service.
    */
@@ -130,11 +125,6 @@ force_reconnect (struct GNUNET_ATS_ConnectivityHandle *ch)
     GNUNET_MQ_destroy (ch->mq);
     ch->mq = NULL;
   }
-  if (NULL != ch->client)
-  {
-    GNUNET_CLIENT_disconnect (ch->client);
-    ch->client = NULL;
-  }
   ch->backoff = GNUNET_TIME_STD_BACKOFF (ch->backoff);
   ch->task = GNUNET_SCHEDULER_add_delayed (ch->backoff,
                                            &reconnect_task,
@@ -204,17 +194,17 @@ reconnect (struct GNUNET_ATS_ConnectivityHandle *ch)
   struct GNUNET_MQ_Envelope *ev;
   struct ClientStartMessage *init;
 
-  GNUNET_assert (NULL == ch->client);
-  ch->client = GNUNET_CLIENT_connect ("ats", ch->cfg);
-  if (NULL == ch->client)
+  GNUNET_assert (NULL == ch->mq);
+  ch->mq = GNUNET_CLIENT_connect (ch->cfg,
+                                  "ats",
+                                  handlers,
+                                  &error_handler,
+                                  ch);
+  if (NULL == ch->mq)
   {
     force_reconnect (ch);
     return;
   }
-  ch->mq = GNUNET_MQ_queue_for_connection_client (ch->client,
-                                                  handlers,
-                                                  &error_handler,
-                                                  ch);
   ev = GNUNET_MQ_msg (init,
                       GNUNET_MESSAGE_TYPE_ATS_START);
   init->start_flag = htonl (START_FLAG_CONNECTION_SUGGESTION);
@@ -281,11 +271,6 @@ GNUNET_ATS_connectivity_done (struct GNUNET_ATS_ConnectivityHandle *ch)
     GNUNET_MQ_destroy (ch->mq);
     ch->mq = NULL;
   }
-  if (NULL != ch->client)
-  {
-    GNUNET_CLIENT_disconnect (ch->client);
-    ch->client = NULL;
-  }
   if (NULL != ch->task)
   {
     GNUNET_SCHEDULER_cancel (ch->task);
@@ -317,9 +302,6 @@ GNUNET_ATS_connectivity_suggest (struct GNUNET_ATS_ConnectivityHandle *ch,
 {
   struct GNUNET_ATS_ConnectivitySuggestHandle *s;
 
-  LOG (GNUNET_ERROR_TYPE_DEBUG,
-       "Requesting ATS to suggest address for `%s'\n",
-       GNUNET_i2s (peer));
   s = GNUNET_new (struct GNUNET_ATS_ConnectivitySuggestHandle);
   s->ch = ch;
   s->id = *peer;
@@ -330,9 +312,15 @@ GNUNET_ATS_connectivity_suggest (struct GNUNET_ATS_ConnectivityHandle *ch,
                                          s,
                                          GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY))
   {
-    GNUNET_break (0);
+    LOG (GNUNET_ERROR_TYPE_DEBUG,
+         "Not requesting ATS to suggest address for `%s', request already pending\n",
+         GNUNET_i2s (peer));
+    GNUNET_free (s);
     return NULL;
   }
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "Requesting ATS to suggest address for `%s'\n",
+       GNUNET_i2s (peer));
   if (NULL == ch->mq)
     return s;
   (void) transmit_suggestion (ch,
@@ -366,7 +354,8 @@ GNUNET_ATS_connectivity_suggest_cancel (struct GNUNET_ATS_ConnectivitySuggestHan
     GNUNET_free (sh);
     return;
   }
-  ev = GNUNET_MQ_msg (m, GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS_CANCEL);
+  ev = GNUNET_MQ_msg (m,
+                     GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS_CANCEL);
   m->strength = htonl (0);
   m->peer = sh->id;
   GNUNET_MQ_send (ch->mq, ev);