diff options
Diffstat (limited to 'src')
43 files changed, 988 insertions, 1187 deletions
diff --git a/src/arm/gnunet-service-arm.c b/src/arm/gnunet-service-arm.c index b43a482baf..5ad4096817 100644 --- a/src/arm/gnunet-service-arm.c +++ b/src/arm/gnunet-service-arm.c @@ -30,12 +30,6 @@ #include "arm.h" /** - * Threshold after which exponential backoff shouldn't increase (in ms); 30m - */ -#define EXPONENTIAL_BACKOFF_THRESHOLD GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 30) - - -/** * List of our services. */ struct ServiceList; @@ -1023,10 +1017,7 @@ maint_child_death (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) pos->name, statstr, statcode, pos->backoff.rel_value); /* schedule restart */ pos->restart_at = GNUNET_TIME_relative_to_absolute (pos->backoff); - pos->backoff = - GNUNET_TIME_relative_min (EXPONENTIAL_BACKOFF_THRESHOLD, - GNUNET_TIME_relative_multiply - (pos->backoff, 2)); + pos->backoff = GNUNET_TIME_STD_BACKOFF (pos->backoff); } if (GNUNET_SCHEDULER_NO_TASK != child_restart_task) GNUNET_SCHEDULER_cancel (child_restart_task); diff --git a/src/core/core_api.c b/src/core/core_api.c index 4d1a5493f1..d2f5119ac4 100644 --- a/src/core/core_api.c +++ b/src/core/core_api.c @@ -440,9 +440,7 @@ reconnect_later (struct GNUNET_CORE_Handle *h) while (NULL != (pr = h->ready_peer_head)) GNUNET_CONTAINER_DLL_remove (h->ready_peer_head, h->ready_peer_tail, pr); GNUNET_assert (h->control_pending_head == NULL); - h->retry_backoff = - GNUNET_TIME_relative_min (GNUNET_TIME_UNIT_SECONDS, h->retry_backoff); - h->retry_backoff = GNUNET_TIME_relative_multiply (h->retry_backoff, 2); + h->retry_backoff = GNUNET_TIME_STD_BACKOFF (h->retry_backoff); } @@ -1174,7 +1172,6 @@ GNUNET_CORE_connect (const struct GNUNET_CONFIGURATION_Handle *cfg, h->hcnt = 0; h->currently_down = GNUNET_YES; h->peers = GNUNET_CONTAINER_multihashmap_create (128, GNUNET_NO); - h->retry_backoff = GNUNET_TIME_UNIT_MILLISECONDS; if (NULL != handlers) while (handlers[h->hcnt].callback != NULL) h->hcnt++; diff --git a/src/datastore/datastore_api.c b/src/datastore/datastore_api.c index fcfc076d27..8ff96d639c 100644 --- a/src/datastore/datastore_api.c +++ b/src/datastore/datastore_api.c @@ -512,12 +512,7 @@ try_reconnect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { struct GNUNET_DATASTORE_Handle *h = cls; - if (h->retry_time.rel_value < GNUNET_CONSTANTS_SERVICE_RETRY.rel_value) - h->retry_time = GNUNET_CONSTANTS_SERVICE_RETRY; - else - h->retry_time = GNUNET_TIME_relative_multiply (h->retry_time, 2); - if (h->retry_time.rel_value > GNUNET_CONSTANTS_SERVICE_TIMEOUT.rel_value) - h->retry_time = GNUNET_CONSTANTS_SERVICE_TIMEOUT; + h->retry_time = GNUNET_TIME_STD_BACKOFF (h->retry_time); h->reconnect_task = GNUNET_SCHEDULER_NO_TASK; h->client = GNUNET_CLIENT_connect ("datastore", h->cfg); if (h->client == NULL) @@ -802,7 +797,7 @@ process_status_message (void *cls, const struct GNUNET_MessageHeader *msg) GNUNET_STATISTICS_update (h->stats, gettext_noop ("# status messages received"), 1, GNUNET_NO); - h->retry_time.rel_value = 0; + h->retry_time = GNUNET_TIME_UNIT_ZERO; process_queue (h); if (rc.cont != NULL) rc.cont (rc.cont_cls, status, @@ -1184,7 +1179,7 @@ process_result_message (void *cls, const struct GNUNET_MessageHeader *msg) free_queue_entry (qe); LOG (GNUNET_ERROR_TYPE_DEBUG, "Received end of result set, new queue size is %u\n", h->queue_size); - h->retry_time.rel_value = 0; + h->retry_time = GNUNET_TIME_UNIT_ZERO; h->result_count = 0; process_queue (h); if (rc.proc != NULL) @@ -1231,7 +1226,7 @@ process_result_message (void *cls, const struct GNUNET_MessageHeader *msg) (unsigned long long) GNUNET_ntohll (dm->uid), ntohl (dm->type), ntohl (dm->size), GNUNET_h2s (&dm->key)); free_queue_entry (qe); - h->retry_time.rel_value = 0; + h->retry_time = GNUNET_TIME_UNIT_ZERO; process_queue (h); if (rc.proc != NULL) rc.proc (rc.proc_cls, &dm->key, ntohl (dm->size), &dm[1], ntohl (dm->type), diff --git a/src/dht/dht_api.c b/src/dht/dht_api.c index 023ffe60d7..0905486d12 100644 --- a/src/dht/dht_api.c +++ b/src/dht/dht_api.c @@ -401,13 +401,7 @@ try_reconnect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) struct GNUNET_DHT_Handle *handle = cls; LOG (GNUNET_ERROR_TYPE_DEBUG, "Reconnecting with DHT %p\n", handle); - handle->reconnect_task = GNUNET_SCHEDULER_NO_TASK; - if (handle->retry_time.rel_value < GNUNET_CONSTANTS_SERVICE_RETRY.rel_value) - handle->retry_time = GNUNET_CONSTANTS_SERVICE_RETRY; - else - handle->retry_time = GNUNET_TIME_relative_multiply (handle->retry_time, 2); - if (handle->retry_time.rel_value > GNUNET_CONSTANTS_SERVICE_TIMEOUT.rel_value) - handle->retry_time = GNUNET_CONSTANTS_SERVICE_TIMEOUT; + handle->retry_time = GNUNET_TIME_STD_BACKOFF (handle->retry_time); handle->reconnect_task = GNUNET_SCHEDULER_NO_TASK; if (GNUNET_YES != try_connect (handle)) { @@ -438,8 +432,9 @@ do_disconnect (struct GNUNET_DHT_Handle *handle) GNUNET_CLIENT_notify_transmit_ready_cancel (handle->th); handle->th = NULL; GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Disconnecting from DHT service, will try to reconnect in %llu ms\n", - (unsigned long long) handle->retry_time.rel_value); + "Disconnecting from DHT service, will try to reconnect in %s\n", + GNUNET_STRINGS_relative_time_to_string (handle->retry_time, + GNUNET_YES)); GNUNET_CLIENT_disconnect (handle->client); handle->client = NULL; diff --git a/src/exit/gnunet-daemon-exit.c b/src/exit/gnunet-daemon-exit.c index 4359db33cc..a8c8d8922d 100644 --- a/src/exit/gnunet-daemon-exit.c +++ b/src/exit/gnunet-daemon-exit.c @@ -2964,31 +2964,6 @@ read_service_conf (void *cls GNUNET_UNUSED, const char *section) /** - * Test if the given AF is supported by this system. - * - * @param af to test - * @return GNUNET_OK if the AF is supported - */ -static int -test_af (int af) -{ - int s; - - s = socket (af, SOCK_STREAM, 0); - if (-1 == s) - { - if (EAFNOSUPPORT == errno) - return GNUNET_NO; - GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, - "socket"); - return GNUNET_SYSERR; - } - close (s); - return GNUNET_OK; -} - - -/** * @brief Main function that will be run by the scheduler. * * @param cls closure @@ -3042,7 +3017,7 @@ run (void *cls, char *const *args GNUNET_UNUSED, ipv6_enabled = GNUNET_CONFIGURATION_get_value_yesno (cfg, "exit", "ENABLE_IPV6"); if ( (ipv4_exit || ipv4_enabled) && - GNUNET_OK != test_af (AF_INET)) + GNUNET_OK != GNUNET_NETWORK_test_pf (PF_INET)) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("This system does not support IPv4, will disable IPv4 functions despite them being enabled in the configuration\n")); @@ -3050,7 +3025,7 @@ run (void *cls, char *const *args GNUNET_UNUSED, ipv4_enabled = GNUNET_NO; } if ( (ipv6_exit || ipv6_enabled) && - GNUNET_OK != test_af (AF_INET6)) + GNUNET_OK != GNUNET_NETWORK_test_pf (PF_INET6)) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("This system does not support IPv6, will disable IPv6 functions despite them being enabled in the configuration\n")); diff --git a/src/fs/fs_download.c b/src/fs/fs_download.c index ecb5c5f8aa..ee301d4d05 100644 --- a/src/fs/fs_download.c +++ b/src/fs/fs_download.c @@ -1439,9 +1439,8 @@ try_reconnect (struct GNUNET_FS_DownloadContext *dc) if (0 == dc->reconnect_backoff.rel_value) dc->reconnect_backoff = GNUNET_TIME_UNIT_MILLISECONDS; else - dc->reconnect_backoff = GNUNET_TIME_relative_min (GNUNET_TIME_relative_multiply (dc->reconnect_backoff, 2), - GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 10)); - + dc->reconnect_backoff = GNUNET_TIME_STD_BACKOFF (dc->reconnect_backoff); + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Will try to reconnect in %s\n", GNUNET_STRINGS_relative_time_to_string (dc->reconnect_backoff, GNUNET_YES)); dc->task = diff --git a/src/fs/fs_search.c b/src/fs/fs_search.c index 370fd2f5c6..d7124b68ec 100644 --- a/src/fs/fs_search.c +++ b/src/fs/fs_search.c @@ -1158,12 +1158,7 @@ try_reconnect (struct GNUNET_FS_SearchContext *sc) GNUNET_CLIENT_disconnect (sc->client); sc->client = NULL; } - if (0 == sc->reconnect_backoff.rel_value) - sc->reconnect_backoff = GNUNET_TIME_UNIT_MILLISECONDS; - else - sc->reconnect_backoff = GNUNET_TIME_relative_min (GNUNET_TIME_relative_multiply (sc->reconnect_backoff, 2), - GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 10)); - + sc->reconnect_backoff = GNUNET_TIME_STD_BACKOFF (sc->reconnect_backoff); sc->task = GNUNET_SCHEDULER_add_delayed (sc->reconnect_backoff, &do_reconnect, diff --git a/src/gns/gns.conf.in b/src/gns/gns.conf.in index 303fbf90b6..9746c07af0 100644 --- a/src/gns/gns.conf.in +++ b/src/gns/gns.conf.in @@ -12,7 +12,7 @@ HIJACK_DNS = NO AUTO_IMPORT_PKEY = YES AUTO_IMPORT_CONFIRMATION_REQ = NO MAX_PARALLEL_BACKGROUND_QUERIES = 25 -DEFAULT_LOOKUP_TIMEOUT = 10 +DEFAULT_LOOKUP_TIMEOUT = 10 s ZONE_PUBLISH_TIME_WINDOW = 4 h # PREFIX = valgrind --leak-check=full --track-origins=yes diff --git a/src/gns/gns.h b/src/gns/gns.h index 2f4ce39289..10119800d5 100644 --- a/src/gns/gns.h +++ b/src/gns/gns.h @@ -27,14 +27,32 @@ #include "gnunet_gns_service.h" +/** + * Name of the GADS TLD. + */ #define GNUNET_GNS_TLD "gads" + +/** + * Name of the zone key TLD. + */ #define GNUNET_GNS_TLD_ZKEY "zkey" + +/** + * TLD name used to indicate relative names. + */ #define GNUNET_GNS_TLD_PLUS "+" -#define GNUNET_GNS_DHT_MAX_UPDATE_INTERVAL 3600 +/** + * Maximum length of a label in DNS. + */ #define MAX_DNS_LABEL_LENGTH 63 + +/** + * Maximum length of a name in DNS. + */ #define MAX_DNS_NAME_LENGTH 253 + GNUNET_NETWORK_STRUCT_BEGIN /** @@ -43,7 +61,7 @@ GNUNET_NETWORK_STRUCT_BEGIN struct GNUNET_GNS_ClientLookupMessage { /** - * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_LOOKUP + * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_LOOKUP */ struct GNUNET_MessageHeader header; @@ -107,13 +125,14 @@ struct GNUNET_GNS_ClientLookupResultMessage }; + /** * Message from client to GNS service to shorten names. */ struct GNUNET_GNS_ClientShortenMessage { /** - * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_SHORTEN + * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_SHORTEN */ struct GNUNET_MessageHeader header; @@ -152,7 +171,7 @@ struct GNUNET_GNS_ClientShortenMessage struct GNUNET_GNS_ClientShortenResultMessage { /** - * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_SHORTEN_RESULT + * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_SHORTEN_RESULT */ struct GNUNET_MessageHeader header; @@ -165,13 +184,14 @@ struct GNUNET_GNS_ClientShortenResultMessage }; + /** * Message from client to GNS service to lookup an authority of a name. */ struct GNUNET_GNS_ClientGetAuthMessage { /** - * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_GET_AUTH + * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_GET_AUTH */ struct GNUNET_MessageHeader header; @@ -190,7 +210,7 @@ struct GNUNET_GNS_ClientGetAuthMessage struct GNUNET_GNS_ClientGetAuthResultMessage { /** - * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_GET_AUTH_RESULT + * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_GET_AUTH_RESULT */ struct GNUNET_MessageHeader header; @@ -202,6 +222,7 @@ struct GNUNET_GNS_ClientGetAuthResultMessage /* followed by the authority part of the name or '\0' for no result*/ }; + GNUNET_NETWORK_STRUCT_END #endif diff --git a/src/gns/gns_api.c b/src/gns/gns_api.c index fef7b866df..b3173a554f 100644 --- a/src/gns/gns_api.c +++ b/src/gns/gns_api.c @@ -68,7 +68,7 @@ struct GNUNET_GNS_LookupRequest /** * request id */ - uint64_t r_id; + uint32_t r_id; }; @@ -106,7 +106,7 @@ struct GNUNET_GNS_ShortenRequest /** * request id */ - uint64_t r_id; + uint32_t r_id; }; @@ -165,14 +165,14 @@ struct PendingMessage struct PendingMessage *next; /** - * request id + * Size of the message. */ - uint64_t r_id; + size_t size; /** - * Size of the message. + * request id */ - size_t size; + uint32_t r_id; /** * This message has been transmitted. GNUNET_NO if the message is @@ -249,8 +249,16 @@ struct GNUNET_GNS_Handle * Reconnect task */ GNUNET_SCHEDULER_TaskIdentifier reconnect_task; + + /** + * How long do we wait until we try to reconnect? + */ + struct GNUNET_TIME_Relative reconnect_backoff; - uint32_t r_id; + /** + * Request Id generator. Incremented by one for each request. + */ + uint32_t r_id_gen; /** * Did we start our receive loop yet? @@ -319,7 +327,7 @@ force_reconnect (struct GNUNET_GNS_Handle *h) h->in_receive = GNUNET_NO; for (st = h->shorten_head; NULL != st; st = st->next) { - p = (struct PendingMessage*) &st[1]; + p = (struct PendingMessage *) &st[1]; if (GNUNET_NO == p->transmitted) continue; p->transmitted = GNUNET_NO; @@ -329,7 +337,7 @@ force_reconnect (struct GNUNET_GNS_Handle *h) } for (lh = h->lookup_head; NULL != lh; lh = lh->next) { - p = (struct PendingMessage*) &lh[1]; + p = (struct PendingMessage *) &lh[1]; if (GNUNET_NO == p->transmitted) continue; p->transmitted = GNUNET_NO; @@ -339,7 +347,7 @@ force_reconnect (struct GNUNET_GNS_Handle *h) } for (ga = h->get_auth_head; NULL != ga; ga = ga->next) { - p = (struct PendingMessage*) &ga[1]; + p = (struct PendingMessage *) &ga[1]; if (GNUNET_NO == p->transmitted) continue; p->transmitted = GNUNET_NO; @@ -347,8 +355,8 @@ force_reconnect (struct GNUNET_GNS_Handle *h) h->pending_tail, p); } - /* FIXME: 1s too long, exponential-backoff, starting at 1ms! (max = 1s might be OK) */ - h->reconnect_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, + h->reconnect_backoff = GNUNET_TIME_STD_BACKOFF (h->reconnect_backoff); + h->reconnect_task = GNUNET_SCHEDULER_add_delayed (h->reconnect_backoff, &reconnect_task, h); } @@ -618,7 +626,7 @@ process_message (void *cls, const struct GNUNET_MessageHeader *msg) const struct GNUNET_GNS_ClientLookupResultMessage *lookup_msg; const struct GNUNET_GNS_ClientShortenResultMessage *shorten_msg; const struct GNUNET_GNS_ClientGetAuthResultMessage *get_auth_msg; - uint64_t r_id; + uint32_t r_id; if (NULL == msg) { @@ -860,7 +868,7 @@ GNUNET_GNS_lookup_zone (struct GNUNET_GNS_Handle *handle, lr->gns_handle = handle; lr->lookup_proc = proc; lr->proc_cls = proc_cls; - lr->r_id = handle->r_id++; + lr->r_id = handle->r_id_gen++; pending = (struct PendingMessage *)&lr[1]; pending->size = msize; pending->r_id = lr->r_id; @@ -975,7 +983,7 @@ GNUNET_GNS_shorten_zone (struct GNUNET_GNS_Handle *handle, sr->gns_handle = handle; sr->shorten_proc = proc; sr->proc_cls = proc_cls; - sr->r_id = handle->r_id++; + sr->r_id = handle->r_id_gen++; GNUNET_CONTAINER_DLL_insert_tail (handle->shorten_head, handle->shorten_tail, sr); pending = (struct PendingMessage *)&sr[1]; @@ -1070,7 +1078,7 @@ GNUNET_GNS_get_authority (struct GNUNET_GNS_Handle *handle, gar->gns_handle = handle; gar->auth_proc = proc; gar->proc_cls = proc_cls; - gar->r_id = handle->r_id++; + gar->r_id = handle->r_id_gen++; GNUNET_CONTAINER_DLL_insert_tail (handle->get_auth_head, handle->get_auth_tail, gar); diff --git a/src/gns/gnunet-gns-proxy.c b/src/gns/gnunet-gns-proxy.c index 47d1493306..fb7b80e16d 100644 --- a/src/gns/gnunet-gns-proxy.c +++ b/src/gns/gnunet-gns-proxy.c @@ -500,41 +500,6 @@ i_to_hexchar (unsigned char i) } -/** -// FIXME: use cURL API - * Escape given 0-terminated string - * - * @param to_esc string to escapse - * @return allocated new escaped string (MUST free!) - */ -static char* -escape_to_urlenc (const char *to_esc) -{ - char *pos = (char*)to_esc; - char *res = GNUNET_malloc (strlen (to_esc) * 3 + 1); - char *rpos = res; - - while ('\0' != *pos) - { - if (isalnum (*pos) || - ('-' == *pos) || ('_' == *pos) || - ('.' == *pos) || ('~' == *pos)) - *rpos++ = *pos; - else if (' ' == *pos) - *rpos++ = '+'; - else - { - *rpos++ = '%'; - *rpos++ = i_to_hexchar (*pos >> 4); - *rpos++ = i_to_hexchar (*pos >> 15); - } - pos++; - } - *rpos = '\0'; - return res; -} - - static int con_post_data_iter (void *cls, enum MHD_ValueKind kind, @@ -610,9 +575,14 @@ con_post_data_iter (void *cls, if (0 == off) { + enc = curl_easy_escape (ctask->curl, key, 0); + if (NULL == enc) + { + GNUNET_break (0); + return MHD_NO; + } /* a key */ pdata = GNUNET_malloc (sizeof (struct ProxyUploadData)); - enc = escape_to_urlenc (key); pdata->value = GNUNET_malloc (strlen (enc) + 3); if (NULL != ctask->upload_data_head) { @@ -624,7 +594,7 @@ con_post_data_iter (void *cls, pdata->value[strlen (pdata->value)] = '='; pdata->bytes_left = strlen (pdata->value); pdata->total_bytes = pdata->bytes_left; - GNUNET_free (enc); + curl_free (enc); GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Escaped POST key: '%s'\n", @@ -636,13 +606,18 @@ con_post_data_iter (void *cls, } /* a value */ + enc = curl_easy_escape (ctask->curl, data, 0); + if (NULL == enc) + { + GNUNET_break (0); + return MHD_NO; + } pdata = GNUNET_malloc (sizeof (struct ProxyUploadData)); - enc = escape_to_urlenc (data); pdata->value = GNUNET_malloc (strlen (enc) + 1); memcpy (pdata->value, enc, strlen (enc)); pdata->bytes_left = strlen (pdata->value); pdata->total_bytes = pdata->bytes_left; - GNUNET_free (enc); + curl_free (enc); GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Escaped POST value: '%s'\n", @@ -1341,6 +1316,7 @@ postprocess_buffer (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) run_mhd_now (ctask->mhd); } + /** * Handle data from cURL * @@ -1592,7 +1568,6 @@ curl_task_download (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) struct ProxyCurlTask *ctask; int num_ctasks; long resp_code; - struct ProxyCurlTask *clean_head = NULL; struct ProxyCurlTask *clean_tail = NULL; @@ -1602,8 +1577,8 @@ curl_task_download (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Shutdown requested while trying to download\n"); - //TODO cleanup - return; + //TODO cleanup + return; } GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Ready to dl\n"); @@ -2392,13 +2367,11 @@ do_write (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) len); } else - { - + { GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "write"); s5r->cleanup = GNUNET_YES; s5r->cleanup_sock = GNUNET_YES; - cleanup_s5r (s5r); - + cleanup_s5r (s5r); return; } @@ -2429,8 +2402,6 @@ do_read_remote (void* cls, const struct GNUNET_SCHEDULER_TaskContext *tc) struct Socks5Request *s5r = cls; s5r->fwdrtask = GNUNET_SCHEDULER_NO_TASK; - - if ((NULL != tc->write_ready) && (GNUNET_NETWORK_fdset_isset (tc->read_ready, s5r->remote_sock)) && (s5r->wbuf_len = GNUNET_NETWORK_socket_recv (s5r->remote_sock, s5r->wbuf, @@ -2442,7 +2413,7 @@ do_read_remote (void* cls, const struct GNUNET_SCHEDULER_TaskContext *tc) } else { - if (s5r->wbuf_len == 0) + if (0 == s5r->wbuf_len) GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "0 bytes received from remote... graceful shutdown!\n"); if (s5r->fwdwtask != GNUNET_SCHEDULER_NO_TASK) @@ -2460,8 +2431,7 @@ do_read_remote (void* cls, const struct GNUNET_SCHEDULER_TaskContext *tc) s5r->wtask = GNUNET_SCHEDULER_add_write_net (GNUNET_TIME_UNIT_FOREVER_REL, s5r->sock, - &do_write, s5r); - + &do_write, s5r); } @@ -2699,7 +2669,7 @@ accept_cb (void* cls, const struct sockaddr *addr, socklen_t addrlen) static int add_handle_to_ssl_mhd (struct GNUNET_NETWORK_Handle *h, const char* domain) { - struct MhdHttpList *hd = NULL; + struct MhdHttpList *hd; struct ProxyGNSCertificate *pgc; struct NetworkHandleList *nh; @@ -2781,7 +2751,6 @@ do_read (void* cls, const struct GNUNET_SCHEDULER_TaskContext *tc) struct socks5_server_hello *s_hello; struct socks5_client_request *c_req; struct socks5_server_response *s_resp; - int ret; char domain[256]; uint8_t dom_len; @@ -2790,7 +2759,6 @@ do_read (void* cls, const struct GNUNET_SCHEDULER_TaskContext *tc) uint32_t remote_ip; struct sockaddr_in remote_addr; struct in_addr *r_sin_addr; - struct NetworkHandleList *nh; s5r->rtask = GNUNET_SCHEDULER_NO_TASK; @@ -3100,7 +3068,6 @@ static void do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { - struct MhdHttpList *hd; struct MhdHttpList *tmp_hd; struct NetworkHandleList *nh; @@ -3111,9 +3078,6 @@ do_shutdown (void *cls, GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Shutting down...\n"); - - gnutls_global_deinit (); - if (NULL != local_gns_zone) GNUNET_free (local_gns_zone); if (NULL != local_private_zone) @@ -3142,13 +3106,11 @@ do_shutdown (void *cls, GNUNET_SCHEDULER_cancel (hd->httpd_task); hd->httpd_task = GNUNET_SCHEDULER_NO_TASK; } - if (NULL != hd->daemon) { MHD_stop_daemon (hd->daemon); hd->daemon = NULL; } - for (nh = hd->socket_handles_head; nh != NULL; nh = tmp_nh) { tmp_nh = nh->next; @@ -3200,12 +3162,11 @@ do_shutdown (void *cls, GNUNET_free_non_null (pdata->value); GNUNET_free (pdata); } - GNUNET_free (ctask); } curl_multi_cleanup (curl_multi); - GNUNET_GNS_disconnect (gns_handle); + gnutls_global_deinit (); } @@ -3243,9 +3204,9 @@ static int load_local_zone_key (const struct GNUNET_CONFIGURATION_Handle *cfg) { char *keyfile; - struct GNUNET_CRYPTO_RsaPrivateKey *key = NULL; + struct GNUNET_CRYPTO_RsaPrivateKey *key; struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pkey; - struct GNUNET_CRYPTO_ShortHashCode *zone = NULL; + struct GNUNET_CRYPTO_ShortHashCode *zone; struct GNUNET_CRYPTO_ShortHashAsciiEncoded zonename; if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_filename (cfg, "gns", @@ -3361,9 +3322,7 @@ run (void *cls, char *const *args, const char *cfgfile, struct sockaddr_un mhd_unix_sock_addr; #endif - curl_multi = curl_multi_init (); - - if (NULL == curl_multi) + if (NULL == (curl_multi = curl_multi_init ())) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to create cURL multo handle!\n"); @@ -3376,8 +3335,8 @@ run (void *cls, char *const *args, const char *cfgfile, if (NULL == cafile) { if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_filename (cfg, "gns-proxy", - "PROXY_CACERT", - &cafile_cfg)) + "PROXY_CACERT", + &cafile_cfg)) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Unable to load proxy CA config value!\n"); @@ -3408,19 +3367,16 @@ run (void *cls, char *const *args, const char *cfgfile, compile_regex (&re_dotplus, (char*) RE_A_HREF); - gns_handle = GNUNET_GNS_connect (cfg); - - if (GNUNET_NO == load_local_zone_key (cfg)) + if (NULL == (gns_handle = GNUNET_GNS_connect (cfg))) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Unable to load zone!\n"); + "Unable to connect to GNS!\n"); return; } - - if (NULL == gns_handle) + if (GNUNET_NO == load_local_zone_key (cfg)) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Unable to connect to GNS!\n"); + "Unable to load zone!\n"); return; } @@ -3477,12 +3433,9 @@ run (void *cls, char *const *args, const char *cfgfile, "Specify PROXY_ |