X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Futil%2Fserver.c;h=f586e42043618ab0122292f1f69a74093ec40122;hb=8dfd7bda2f139e2dac27e804167eedc3d227453e;hp=606d4436906572167ecda4f2af35b6625b18073a;hpb=537903a8dc4c3ecf2dfa382af0289ddf890adfc7;p=oweals%2Fgnunet.git diff --git a/src/util/server.c b/src/util/server.c index 606d44369..f586e4204 100644 --- a/src/util/server.c +++ b/src/util/server.c @@ -79,11 +79,6 @@ struct NotifyList */ struct GNUNET_SERVER_Handle { - /** - * My scheduler. - */ - struct GNUNET_SCHEDULER_Handle *sched; - /** * List of handlers for incoming messages. */ @@ -121,11 +116,6 @@ struct GNUNET_SERVER_Handle */ struct GNUNET_TIME_Relative idle_timeout; - /** - * maximum write buffer size for accepted sockets - */ - size_t maxbuf; - /** * Task scheduled to do the listening. */ @@ -254,8 +244,7 @@ process_listen_socket (void *cls, if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) { /* ignore shutdown, someone else will take care of it! */ - server->listen_task = GNUNET_SCHEDULER_add_select (server->sched, - GNUNET_SCHEDULER_PRIORITY_HIGH, + server->listen_task = GNUNET_SCHEDULER_add_select (GNUNET_SCHEDULER_PRIORITY_HIGH, GNUNET_SCHEDULER_NO_TASK, GNUNET_TIME_UNIT_FOREVER_REL, r, NULL, @@ -271,10 +260,9 @@ process_listen_socket (void *cls, (tc->read_ready, server->listen_sockets[i])) { sock = - GNUNET_CONNECTION_create_from_accept (tc->sched, server->access, + GNUNET_CONNECTION_create_from_accept (server->access, server->access_cls, - server->listen_sockets[i], - server->maxbuf); + server->listen_sockets[i]); if (sock != NULL) { #if DEBUG_SERVER @@ -291,8 +279,7 @@ process_listen_socket (void *cls, i++; } /* listen for more! */ - server->listen_task = GNUNET_SCHEDULER_add_select (server->sched, - GNUNET_SCHEDULER_PRIORITY_HIGH, + server->listen_task = GNUNET_SCHEDULER_add_select (GNUNET_SCHEDULER_PRIORITY_HIGH, GNUNET_SCHEDULER_NO_TASK, GNUNET_TIME_UNIT_FOREVER_REL, r, NULL, @@ -392,11 +379,9 @@ open_listen_socket (const struct sockaddr *serverAddr, socklen_t socklen) /** * Create a new server. * - * @param sched scheduler to use * @param access function for access control * @param access_cls closure for access * @param lsocks NULL-terminated array of listen sockets - * @param maxbuf maximum write buffer size for accepted sockets * @param idle_timeout after how long should we timeout idle connections? * @param require_found if YES, connections sending messages of unknown type * will be closed @@ -404,10 +389,8 @@ open_listen_socket (const struct sockaddr *serverAddr, socklen_t socklen) * (typically, "port" already in use) */ struct GNUNET_SERVER_Handle * -GNUNET_SERVER_create_with_sockets (struct GNUNET_SCHEDULER_Handle *sched, - GNUNET_CONNECTION_AccessCheck access, void *access_cls, +GNUNET_SERVER_create_with_sockets (GNUNET_CONNECTION_AccessCheck access, void *access_cls, struct GNUNET_NETWORK_Handle **lsocks, - size_t maxbuf, struct GNUNET_TIME_Relative idle_timeout, int require_found) @@ -417,8 +400,6 @@ GNUNET_SERVER_create_with_sockets (struct GNUNET_SCHEDULER_Handle *sched, int i; ret = GNUNET_malloc (sizeof (struct GNUNET_SERVER_Handle)); - ret->sched = sched; - ret->maxbuf = maxbuf; ret->idle_timeout = idle_timeout; ret->listen_sockets = lsocks; ret->access = access; @@ -430,8 +411,7 @@ GNUNET_SERVER_create_with_sockets (struct GNUNET_SCHEDULER_Handle *sched, i = 0; while (NULL != ret->listen_sockets[i]) GNUNET_NETWORK_fdset_set (r, ret->listen_sockets[i++]); - ret->listen_task = GNUNET_SCHEDULER_add_select (sched, - GNUNET_SCHEDULER_PRIORITY_HIGH, + ret->listen_task = GNUNET_SCHEDULER_add_select (GNUNET_SCHEDULER_PRIORITY_HIGH, GNUNET_SCHEDULER_NO_TASK, GNUNET_TIME_UNIT_FOREVER_REL, r, NULL, @@ -446,12 +426,10 @@ GNUNET_SERVER_create_with_sockets (struct GNUNET_SCHEDULER_Handle *sched, /** * Create a new server. * - * @param sched scheduler to use * @param access function for access control * @param access_cls closure for access * @param serverAddr address to listen on (including port), NULL terminated array * @param socklen length of serverAddr - * @param maxbuf maximum write buffer size for accepted sockets * @param idle_timeout after how long should we timeout idle connections? * @param require_found if YES, connections sending messages of unknown type * will be closed @@ -459,12 +437,10 @@ GNUNET_SERVER_create_with_sockets (struct GNUNET_SCHEDULER_Handle *sched, * (typically, "port" already in use) */ struct GNUNET_SERVER_Handle * -GNUNET_SERVER_create (struct GNUNET_SCHEDULER_Handle *sched, - GNUNET_CONNECTION_AccessCheck access, +GNUNET_SERVER_create (GNUNET_CONNECTION_AccessCheck access, void *access_cls, struct sockaddr *const *serverAddr, const socklen_t * socklen, - size_t maxbuf, struct GNUNET_TIME_Relative idle_timeout, int require_found) { @@ -500,10 +476,8 @@ GNUNET_SERVER_create (struct GNUNET_SCHEDULER_Handle *sched, { lsocks = NULL; } - return GNUNET_SERVER_create_with_sockets (sched, - access, access_cls, + return GNUNET_SERVER_create_with_sockets (access, access_cls, lsocks, - maxbuf, idle_timeout, require_found); } @@ -526,7 +500,7 @@ GNUNET_SERVER_destroy (struct GNUNET_SERVER_Handle *s) #endif if (GNUNET_SCHEDULER_NO_TASK != s->listen_task) { - GNUNET_SCHEDULER_cancel (s->sched, s->listen_task); + GNUNET_SCHEDULER_cancel (s->listen_task); s->listen_task = GNUNET_SCHEDULER_NO_TASK; } if (s->listen_sockets != NULL) @@ -629,7 +603,14 @@ GNUNET_SERVER_inject (struct GNUNET_SERVER_Handle *server, { if ((mh->expected_size != 0) && (mh->expected_size != size)) { +#if GNUNET8_NETWORK_IS_DEAD + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, + "Expected %u bytes for message of type %u, got %u\n", + mh->expected_size, + mh->type, + size); GNUNET_break_op (0); +#endif return GNUNET_SYSERR; } if (sender != NULL) @@ -877,8 +858,7 @@ GNUNET_SERVER_connect_socket (struct client = GNUNET_malloc (sizeof (struct GNUNET_SERVER_Client)); client->connection = connection; - client->mst = GNUNET_SERVER_mst_create (GNUNET_SERVER_MAX_MESSAGE_SIZE - 1, - &client_message_tokenizer_callback, + client->mst = GNUNET_SERVER_mst_create (&client_message_tokenizer_callback, server); client->reference_count = 1; client->server = server; @@ -1029,8 +1009,7 @@ GNUNET_SERVER_client_disconnect (struct GNUNET_SERVER_Client *client) #endif if (client->restart_task != GNUNET_SCHEDULER_NO_TASK) { - GNUNET_SCHEDULER_cancel (client->server->sched, - client->restart_task); + GNUNET_SCHEDULER_cancel (client->restart_task); client->restart_task = GNUNET_SCHEDULER_NO_TASK; } if (GNUNET_YES == client->receive_pending) @@ -1059,8 +1038,7 @@ GNUNET_SERVER_client_disconnect (struct GNUNET_SERVER_Client *client) prev->next = pos->next; if (client->restart_task != GNUNET_SCHEDULER_NO_TASK) { - GNUNET_SCHEDULER_cancel (server->sched, - client->restart_task); + GNUNET_SCHEDULER_cancel (client->restart_task); client->restart_task = GNUNET_SCHEDULER_NO_TASK; } n = server->disconnect_notify_list; @@ -1188,8 +1166,7 @@ GNUNET_SERVER_receive_done (struct GNUNET_SERVER_Client *client, int success) "GNUNET_SERVER_receive_done causes restart in reading from the socket\n"); #endif GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == client->restart_task); - client->restart_task = GNUNET_SCHEDULER_add_now (client->server->sched, - &restart_processing, + client->restart_task = GNUNET_SCHEDULER_add_now (&restart_processing, client); }