Don't shadow the system() function
[oweals/gnunet.git] / src / util / server.c
index 279b65792b8ad5049db7a059d8ce297abb24055d..1a4b73126397f1c9d8c6076824fc014b1dce857c 100644 (file)
@@ -397,7 +397,6 @@ process_listen_socket (void *cls,
 {
   struct GNUNET_SERVER_Handle *server = cls;
   struct GNUNET_CONNECTION_Handle *sock;
-  struct GNUNET_SERVER_Client *client;
   unsigned int i;
 
   server->listen_task = NULL;
@@ -407,10 +406,10 @@ process_listen_socket (void *cls,
     GNUNET_SERVER_resume (server);
     return;
   }
-  i = 0;
-  while (NULL != server->listen_sockets[i])
+  for (i = 0; NULL != server->listen_sockets[i]; i++)
   {
-    if (GNUNET_NETWORK_fdset_isset (tc->read_ready, server->listen_sockets[i]))
+    if (GNUNET_NETWORK_fdset_isset (tc->read_ready,
+                                    server->listen_sockets[i]))
     {
       sock =
           GNUNET_CONNECTION_create_from_accept (server->access_cb,
@@ -420,12 +419,10 @@ process_listen_socket (void *cls,
       {
         LOG (GNUNET_ERROR_TYPE_DEBUG,
              "Server accepted incoming connection.\n");
-        client = GNUNET_SERVER_connect_socket (server, sock);
-        /* decrement reference count, we don't keep "client" alive */
-        GNUNET_SERVER_client_drop (client);
+        (void) GNUNET_SERVER_connect_socket (server,
+                                             sock);
       }
     }
-    i++;
   }
   /* listen for more! */
   GNUNET_SERVER_resume (server);
@@ -816,7 +813,8 @@ GNUNET_SERVER_destroy (struct GNUNET_SERVER_Handle *server)
   }
   while (NULL != (npos = server->disconnect_notify_list_head))
   {
-    npos->callback (npos->callback_cls, NULL);
+    npos->callback (npos->callback_cls,
+                    NULL);
     GNUNET_CONTAINER_DLL_remove (server->disconnect_notify_list_head,
                                 server->disconnect_notify_list_tail,
                                 npos);
@@ -824,7 +822,8 @@ GNUNET_SERVER_destroy (struct GNUNET_SERVER_Handle *server)
   }
   while (NULL != (npos = server->connect_notify_list_head))
   {
-    npos->callback (npos->callback_cls, NULL);
+    npos->callback (npos->callback_cls,
+                    NULL);
     GNUNET_CONTAINER_DLL_remove (server->connect_notify_list_head,
                                 server->connect_notify_list_tail,
                                 npos);
@@ -1139,7 +1138,8 @@ process_incoming (void *cls,
     GNUNET_CONNECTION_receive (client->connection,
                                GNUNET_SERVER_MAX_MESSAGE_SIZE - 1,
                                GNUNET_TIME_absolute_get_remaining (end),
-                               &process_incoming, client);
+                               &process_incoming,
+                               client);
     return;
   }
   if ( (NULL == buf) ||
@@ -1235,13 +1235,14 @@ restart_processing (void *cls,
  * received a complete message.
  *
  * @param cls closure (struct GNUNET_SERVER_Handle)
- * @param client identification of the client (struct GNUNET_SERVER_Client*)
+ * @param client identification of the client (`struct GNUNET_SERVER_Client *`)
  * @param message the actual message
  *
  * @return #GNUNET_OK on success, #GNUNET_SYSERR to stop further processing
  */
 static int
-client_message_tokenizer_callback (void *cls, void *client,
+client_message_tokenizer_callback (void *cls,
+                                   void *client,
                                    const struct GNUNET_MessageHeader *message)
 {
   struct GNUNET_SERVER_Handle *server = cls;
@@ -1272,8 +1273,7 @@ client_message_tokenizer_callback (void *cls, void *client,
  * @param server the server to use
  * @param connection the connection to manage (client must
  *        stop using this connection from now on)
- * @return the client handle (client should call
- *         "client_drop" on the return value eventually)
+ * @return the client handle
  */
 struct GNUNET_SERVER_Client *
 GNUNET_SERVER_connect_socket (struct GNUNET_SERVER_Handle *server,
@@ -1284,7 +1284,6 @@ GNUNET_SERVER_connect_socket (struct GNUNET_SERVER_Handle *server,
 
   client = GNUNET_new (struct GNUNET_SERVER_Client);
   client->connection = connection;
-  client->reference_count = 1;
   client->server = server;
   client->last_activity = GNUNET_TIME_absolute_get ();
   client->idle_timeout = server->idle_timeout;
@@ -1420,6 +1419,7 @@ GNUNET_SERVER_connect_notify (struct GNUNET_SERVER_Handle *server,
                              void *callback_cls)
 {
   struct NotifyList *n;
+  struct GNUNET_SERVER_Client *client;
 
   n = GNUNET_new (struct NotifyList);
   n->callback = callback;
@@ -1427,6 +1427,8 @@ GNUNET_SERVER_connect_notify (struct GNUNET_SERVER_Handle *server,
   GNUNET_CONTAINER_DLL_insert (server->connect_notify_list_head,
                               server->connect_notify_list_tail,
                               n);
+  for (client = server->clients_head; NULL != client; client = client->next)
+    callback (callback_cls, client);
 }
 
 
@@ -1439,8 +1441,8 @@ GNUNET_SERVER_connect_notify (struct GNUNET_SERVER_Handle *server,
  */
 void
 GNUNET_SERVER_disconnect_notify_cancel (struct GNUNET_SERVER_Handle *server,
-                                        GNUNET_SERVER_DisconnectCallback
-                                        callback, void *callback_cls)
+                                        GNUNET_SERVER_DisconnectCallback callback,
+                                        void *callback_cls)
 {
   struct NotifyList *pos;
 
@@ -1491,7 +1493,7 @@ GNUNET_SERVER_connect_notify_cancel (struct GNUNET_SERVER_Handle *server,
 /**
  * Destroy the connection that is passed in via @a cls.  Used
  * as calling #GNUNET_CONNECTION_destroy from within a function
- * that was itself called from within 'process_notify' of
+ * that was itself called from within process_notify() of
  * 'connection.c' is not allowed (see #2329).
  *
  * @param cls connection to destroy
@@ -1547,27 +1549,34 @@ GNUNET_SERVER_client_disconnect (struct GNUNET_SERVER_Client *client)
                                 server->clients_tail,
                                 client);
     if (NULL != server->mst_destroy)
-      server->mst_destroy (server->mst_cls, client->mst);
+      server->mst_destroy (server->mst_cls,
+                           client->mst);
     else
       GNUNET_SERVER_mst_destroy (client->mst);
     client->mst = NULL;
     for (n = server->disconnect_notify_list_head; NULL != n; n = n->next)
-      n->callback (n->callback_cls, client);
+      n->callback (n->callback_cls,
+                   client);
   }
   client->reference_count--;
   if (client->reference_count > 0)
   {
     LOG (GNUNET_ERROR_TYPE_DEBUG,
-         "RC still positive, not destroying everything.\n");
+         "RC of %p still positive, not destroying everything.\n",
+         client);
     client->server = NULL;
     return;
   }
   if (GNUNET_YES == client->in_process_client_buffer)
   {
     LOG (GNUNET_ERROR_TYPE_DEBUG,
-         "Still processing inputs, not destroying everything.\n");
+         "Still processing inputs of %p, not destroying everything.\n",
+         client);
     return;
   }
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "RC of %p now zero, destroying everything.\n",
+       client);
   if (GNUNET_YES == client->persist)
     GNUNET_CONNECTION_persist_ (client->connection);
   if (NULL != client->th.cth)
@@ -1650,8 +1659,8 @@ struct GNUNET_SERVER_TransmitHandle *
 GNUNET_SERVER_notify_transmit_ready (struct GNUNET_SERVER_Client *client,
                                      size_t size,
                                      struct GNUNET_TIME_Relative timeout,
-                                     GNUNET_CONNECTION_TransmitReadyNotify
-                                     callback, void *callback_cls)
+                                     GNUNET_CONNECTION_TransmitReadyNotify callback,
+                                     void *callback_cls)
 {
   if (NULL != client->th.callback)
     return NULL;
@@ -1747,7 +1756,8 @@ GNUNET_SERVER_receive_done (struct GNUNET_SERVER_Client *client,
   LOG (GNUNET_ERROR_TYPE_DEBUG,
        "GNUNET_SERVER_receive_done causes restart in reading from the socket\n");
   GNUNET_assert (NULL == client->restart_task);
-  client->restart_task = GNUNET_SCHEDULER_add_now (&restart_processing, client);
+  client->restart_task = GNUNET_SCHEDULER_add_now (&restart_processing,
+                                                   client);
 }