Tell core that we want to have this packet delivered
[oweals/gnunet.git] / src / util / service.c
index d18d4e9e3d6597bb827579a1ded4dfec69c817d0..25a9b08dc3ef3032341491c1bd01346d4878684f 100644 (file)
@@ -429,11 +429,6 @@ struct GNUNET_SERVICE_Context
    */
   struct GNUNET_SERVER_Handle *server;
 
-  /**
-   * Scheduler for the server.
-   */
-  struct GNUNET_SCHEDULER_Handle *sched;
-
   /**
    * NULL-terminated array of addresses to bind to, NULL if we got pre-bound
    * listen sockets.
@@ -872,6 +867,16 @@ GNUNET_SERVICE_get_server_addresses (const char *serviceName,
                                                            &unixpath));
 
       /* probe UNIX support */
+      struct sockaddr_un s_un;
+      if (strlen(unixpath) >= sizeof(s_un.sun_path))
+      {
+         GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                  _("UNIXPATH `%s' too long, maximum length is %llu\n"),unixpath, sizeof(s_un.sun_path));
+             GNUNET_free_non_null (hostname);
+             GNUNET_free (unixpath);
+         return GNUNET_SYSERR;
+      }
+
       desc = GNUNET_NETWORK_socket_create (AF_UNIX, SOCK_STREAM, 0);
       if (NULL == desc)
         {
@@ -1290,16 +1295,13 @@ service_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
   struct GNUNET_SERVICE_Context *sctx = cls;
   unsigned int i;
 
-  sctx->sched = tc->sched;
   if (sctx->lsocks != NULL)
-    sctx->server = GNUNET_SERVER_create_with_sockets (tc->sched,
-                                                     &check_access,
+    sctx->server = GNUNET_SERVER_create_with_sockets (&check_access,
                                                      sctx,
                                                      sctx->lsocks,
                                                      sctx->timeout, sctx->require_found);
   else
-    sctx->server = GNUNET_SERVER_create (tc->sched,
-                                        &check_access,
+    sctx->server = GNUNET_SERVER_create (&check_access,
                                         sctx,
                                         sctx->addrs,
                                         sctx->addrlens,
@@ -1325,8 +1327,7 @@ service_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
     {
       /* install a task that will kill the server
          process if the scheduler ever gets a shutdown signal */
-      GNUNET_SCHEDULER_add_delayed (tc->sched,
-                                    GNUNET_TIME_UNIT_FOREVER_REL,
+      GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
                                     &shutdown_task, sctx->server);
     }
   sctx->my_handlers = GNUNET_malloc (sizeof (defhandlers));
@@ -1354,7 +1355,7 @@ service_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
          i++;
        }
     }
-  sctx->task (sctx->task_cls, tc->sched, sctx->server, sctx->cfg);
+  sctx->task (sctx->task_cls, sctx->server, sctx->cfg);
 }
 
 
@@ -1612,13 +1613,11 @@ shutdown:
  * initialized system.
  *
  * @param serviceName our service name
- * @param sched scheduler to use
  * @param cfg configuration to use
  * @return NULL on error, service handle
  */
 struct GNUNET_SERVICE_Context *
 GNUNET_SERVICE_start (const char *serviceName,
-                      struct GNUNET_SCHEDULER_Handle *sched,
                       const struct GNUNET_CONFIGURATION_Handle *cfg)
 {
   int i;
@@ -1630,7 +1629,6 @@ GNUNET_SERVICE_start (const char *serviceName,
   sctx->timeout = GNUNET_TIME_UNIT_FOREVER_REL;
   sctx->serviceName = serviceName;
   sctx->cfg = cfg;
-  sctx->sched = sched;
 
   /* setup subsystems */
   if (GNUNET_OK != setup_service (sctx))
@@ -1639,14 +1637,12 @@ GNUNET_SERVICE_start (const char *serviceName,
       return NULL;
     }
   if (sctx->lsocks != NULL)
-    sctx->server = GNUNET_SERVER_create_with_sockets (sched,
-                                                     &check_access,
+    sctx->server = GNUNET_SERVER_create_with_sockets (&check_access,
                                                      sctx,
                                                      sctx->lsocks,
                                                      sctx->timeout, sctx->require_found);
   else
-    sctx->server = GNUNET_SERVER_create (sched,
-                                        &check_access,
+    sctx->server = GNUNET_SERVER_create (&check_access,
                                         sctx,
                                         sctx->addrs,
                                         sctx->addrlens,