From 81b31b0577c1c4e3ddfc736f65d3329b5afad1a9 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Fri, 12 Mar 2010 17:09:36 +0000 Subject: [PATCH] fixes --- contrib/defaults.conf | 3 ++- src/core/gnunet-service-core.c | 11 +++++++++-- src/datastore/gnunet-service-datastore.c | 12 ++++++++++++ src/fs/fs_test_lib_data.conf | 6 +++++- src/util/connection.c | 11 ++++++----- src/util/disk.c | 5 ++++- src/util/server.c | 2 +- 7 files changed, 39 insertions(+), 11 deletions(-) diff --git a/contrib/defaults.conf b/contrib/defaults.conf index d469bf2a8..07bea3732 100644 --- a/contrib/defaults.conf +++ b/contrib/defaults.conf @@ -32,7 +32,7 @@ ACCEPT_FROM = 127.0.0.1; ACCEPT_FROM6 = ::1; ALLOW_SHUTDOWN = YES DEFAULTSERVICES = resolver transport core topology hostlist -GLOBAL_POSTFIX = -l $SERVICEHOME/{}-logs +#GLOBAL_POSTFIX = -l $SERVICEHOME/{}-logs # GLOBAL_PREFIX = # USERNAME = # MAXBUF = @@ -132,6 +132,7 @@ ALLOW_SHUTDOWN = YES # quotas are in bytes per second now! TOTAL_QUOTA_IN = 65536 TOTAL_QUOTA_OUT = 65536 +DEBUG = YES # USERNAME = # MAXBUF = # TIMEOUT = diff --git a/src/core/gnunet-service-core.c b/src/core/gnunet-service-core.c index 1dd7e1d8b..8f22313e6 100644 --- a/src/core/gnunet-service-core.c +++ b/src/core/gnunet-service-core.c @@ -805,7 +805,14 @@ send_to_all_clients (const struct GNUNET_MessageHeader *msg, while (c != NULL) { if (0 != (c->options & options)) - send_to_client (c, msg, can_drop); + { +#if DEBUG_CORE_CLIENT + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Sending message of type %u to client.\n", + ntohs (msg->type)); +#endif + send_to_client (c, msg, can_drop); + } c = c->next; } } @@ -885,7 +892,7 @@ handle_client_init (void *cls, "Sending `%s' message to client.\n", "INIT_REPLY"); #endif send_to_client (c, &irm.header, GNUNET_NO); - if (c->options & GNUNET_CORE_OPTION_SEND_CONNECT) + if (0 != (c->options & GNUNET_CORE_OPTION_SEND_CONNECT)) { /* notify new client about existing neighbours */ cnm.header.size = htons (sizeof (struct ConnectNotifyMessage)); diff --git a/src/datastore/gnunet-service-datastore.c b/src/datastore/gnunet-service-datastore.c index 9f5d594b5..06f07f474 100644 --- a/src/datastore/gnunet-service-datastore.c +++ b/src/datastore/gnunet-service-datastore.c @@ -234,6 +234,11 @@ static struct TransmitCallbackContext *tcc_head; */ static struct TransmitCallbackContext *tcc_tail; +/** + * Have we already clean ed up the TCCs and are hence no longer + * willing (or able) to transmit anything to anyone? + */ +static int cleaning_done; /** * Task that is used to remove expired entries from @@ -502,6 +507,12 @@ transmit (struct GNUNET_SERVER_Client *client, { struct TransmitCallbackContext *tcc; + if (GNUNET_YES == cleaning_done) + { + if (NULL != tc) + tc (tc_cls, GNUNET_SYSERR); + return; + } tcc = GNUNET_malloc (sizeof(struct TransmitCallbackContext)); tcc->msg = msg; tcc->client = client; @@ -1257,6 +1268,7 @@ cleaning_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { struct TransmitCallbackContext *tcc; + cleaning_done = GNUNET_YES; while (NULL != (tcc = tcc_head)) { GNUNET_CONTAINER_DLL_remove (tcc_head, diff --git a/src/fs/fs_test_lib_data.conf b/src/fs/fs_test_lib_data.conf index 70b47a9d8..20004ab16 100644 --- a/src/fs/fs_test_lib_data.conf +++ b/src/fs/fs_test_lib_data.conf @@ -21,6 +21,8 @@ DEFAULTSERVICES = resolver datastore transport core fs peerinfo [datastore] #DEBUG = YES +#PREFIX = valgrind --tool=memcheck --leak-check=yes +#BINARY = /home/grothoff/bin/gnunet-service-datastore [statistics] PORT = 43467 @@ -40,7 +42,9 @@ PORT = 43470 HOSTNAME = localhost #TOTAL_QUOTA_IN = 3932160 #TOTAL_QUOTA_OUT = 3932160 -#DEBUG = YES +DEBUG = YES +#PREFIX = valgrind --tool=memcheck --leak-check=yes +#BINARY = /home/grothoff/bin/gnunet-service-core [fs] PORT = 43471 diff --git a/src/util/connection.c b/src/util/connection.c index 10f53dcf9..22a75691b 100644 --- a/src/util/connection.c +++ b/src/util/connection.c @@ -931,11 +931,6 @@ void GNUNET_CONNECTION_destroy (struct GNUNET_CONNECTION_Handle *sock, int finish_pending_write) { - if ((sock->write_buffer_off == 0) && (sock->dns_active != NULL)) - { - GNUNET_RESOLVER_request_cancel (sock->dns_active); - sock->dns_active = NULL; - } if (GNUNET_NO == finish_pending_write) { if (sock->write_task != GNUNET_SCHEDULER_NO_TASK) @@ -943,8 +938,14 @@ GNUNET_CONNECTION_destroy (struct GNUNET_CONNECTION_Handle *sock, GNUNET_SCHEDULER_cancel (sock->sched, sock->write_task); sock->write_task = GNUNET_SCHEDULER_NO_TASK; + sock->write_buffer_off = 0; } } + if ((sock->write_buffer_off == 0) && (sock->dns_active != NULL)) + { + GNUNET_RESOLVER_request_cancel (sock->dns_active); + sock->dns_active = NULL; + } GNUNET_assert (sock->sched != NULL); GNUNET_SCHEDULER_add_now (sock->sched, &destroy_continuation, sock); diff --git a/src/util/disk.c b/src/util/disk.c index fa737843c..588ecae3c 100644 --- a/src/util/disk.c +++ b/src/util/disk.c @@ -1239,7 +1239,10 @@ GNUNET_DISK_file_open (const char *fn, fd = open (expfn, oflags | O_LARGEFILE, mode); if (fd == -1) { - GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_WARNING, "open", expfn); + if (0 == (flags & GNUNET_DISK_OPEN_FAILIFEXISTS)) + GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_WARNING, "open", expfn); + else + GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_DEBUG, "open", expfn); GNUNET_free (expfn); return NULL; } diff --git a/src/util/server.c b/src/util/server.c index b3c03d710..1353d4c05 100644 --- a/src/util/server.c +++ b/src/util/server.c @@ -1198,7 +1198,7 @@ GNUNET_SERVER_client_disconnect (struct GNUNET_SERVER_Client *client) } if (rc > 0) return; - if (client->in_process_client_buffer) + if (client->in_process_client_buffer == GNUNET_YES) return; client->destroy (client->client_closure); GNUNET_free (client); -- 2.25.1