From: Bart Polot Date: Thu, 5 Jan 2012 20:00:45 +0000 (+0000) Subject: - Fixed some bugs in monitor code X-Git-Tag: initial-import-from-subversion-38251~15410 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=fca364b9a6259f8e802ca118d069eecacf625064;p=oweals%2Fgnunet.git - Fixed some bugs in monitor code --- diff --git a/src/dht/dht_api.c b/src/dht/dht_api.c index a49af335b..353620960 100644 --- a/src/dht/dht_api.c +++ b/src/dht/dht_api.c @@ -634,7 +634,11 @@ service_message_handler (void *cls, const struct GNUNET_MessageHeader *msg) if (ntohs (msg->type) != GNUNET_MESSAGE_TYPE_DHT_CLIENT_RESULT) { if (process_monitor_message (handle, msg) == GNUNET_OK) + { + GNUNET_CLIENT_receive (handle->client, &service_message_handler, handle, + GNUNET_TIME_UNIT_FOREVER_REL); return; + } GNUNET_break (0); do_disconnect (handle); return; @@ -965,6 +969,7 @@ GNUNET_DHT_monitor_start (struct GNUNET_DHT_Handle *handle, struct GNUNET_DHT_MonitorMessage *m; struct PendingMessage *pending; + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "monitor start\n"); h = GNUNET_malloc (sizeof (struct GNUNET_DHT_MonitorHandle)); GNUNET_CONTAINER_DLL_insert(handle->monitor_head, handle->monitor_tail, h); @@ -985,6 +990,11 @@ GNUNET_DHT_monitor_start (struct GNUNET_DHT_Handle *handle, pending->msg = &m->header; pending->handle = handle; pending->free_on_send = GNUNET_YES; + m->header.type = htons (GNUNET_MESSAGE_TYPE_DHT_MONITOR_GET); + m->header.size = htons (sizeof (struct GNUNET_DHT_MonitorMessage)); + m->type = htonl(type); + if (NULL != key) + memcpy (&m->key, key, sizeof(GNUNET_HashCode)); GNUNET_CONTAINER_DLL_insert (handle->pending_head, handle->pending_tail, pending); pending->in_pending_queue = GNUNET_YES; diff --git a/src/dht/gnunet-service-dht_clients.c b/src/dht/gnunet-service-dht_clients.c index 7642dc6c3..2c013b38f 100644 --- a/src/dht/gnunet-service-dht_clients.c +++ b/src/dht/gnunet-service-dht_clients.c @@ -666,7 +666,9 @@ handle_dht_local_monitor (void *cls, struct GNUNET_SERVER_Client *client, r->key = GNUNET_malloc (sizeof (GNUNET_HashCode)); memcpy (r->key, &msg->key, sizeof (GNUNET_HashCode)); } - + GNUNET_CONTAINER_DLL_insert (monitor_head, monitor_tail, r); + // FIXME add remove somewhere + GNUNET_SERVER_receive_done (client, GNUNET_OK); } @@ -1061,7 +1063,7 @@ GDS_CLIENTS_process_monitor (uint16_t mtype, cl_size = 0; for (m = monitor_head; NULL != m; m = m->next) { - if (m->type == type && + if ((GNUNET_BLOCK_TYPE_ANY == m->type || m->type == type) && (NULL == m->key || memcmp (key, m->key, sizeof(GNUNET_HashCode)) == 0)) {