diff options
author | Christian Grothoff <christian@grothoff.org> | 2021-11-22 09:26:55 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2021-11-22 09:26:55 +0100 |
commit | 925886ed8eea8342c7d7a94b5250fff2f421f60f (patch) | |
tree | 14196c364b724351b645566bb0d5a1582fe133c5 /src | |
parent | 71d0c6696d2b2f1293bea1fc735d885913da6d8a (diff) | |
download | gnunet-925886ed8eea8342c7d7a94b5250fff2f421f60f.tar.gz gnunet-925886ed8eea8342c7d7a94b5250fff2f421f60f.zip |
-fixes
Diffstat (limited to 'src')
-rw-r--r-- | src/nat/nat_api.c | 43 | ||||
-rw-r--r-- | src/transport/gnunet-communicator-tcp.c | 39 | ||||
-rw-r--r-- | src/util/mq.c | 6 | ||||
-rw-r--r-- | src/util/program.c | 11 |
4 files changed, 59 insertions, 40 deletions
diff --git a/src/nat/nat_api.c b/src/nat/nat_api.c index 4622b1428..20e7b6ec6 100644 --- a/src/nat/nat_api.c +++ b/src/nat/nat_api.c | |||
@@ -311,7 +311,8 @@ handle_address_change_notification ( | |||
311 | * @param error details about the error | 311 | * @param error details about the error |
312 | */ | 312 | */ |
313 | static void | 313 | static void |
314 | mq_error_handler (void *cls, enum GNUNET_MQ_Error error) | 314 | mq_error_handler (void *cls, |
315 | enum GNUNET_MQ_Error error) | ||
315 | { | 316 | { |
316 | struct GNUNET_NAT_Handle *nh = cls; | 317 | struct GNUNET_NAT_Handle *nh = cls; |
317 | 318 | ||
@@ -328,29 +329,36 @@ static void | |||
328 | do_connect (void *cls) | 329 | do_connect (void *cls) |
329 | { | 330 | { |
330 | struct GNUNET_NAT_Handle *nh = cls; | 331 | struct GNUNET_NAT_Handle *nh = cls; |
331 | struct GNUNET_MQ_MessageHandler handlers[] = | 332 | struct GNUNET_MQ_MessageHandler handlers[] = { |
332 | { GNUNET_MQ_hd_var_size (connection_reversal_request, | 333 | GNUNET_MQ_hd_var_size ( |
333 | GNUNET_MESSAGE_TYPE_NAT_CONNECTION_REVERSAL_REQUESTED, | 334 | connection_reversal_request, |
334 | struct | 335 | GNUNET_MESSAGE_TYPE_NAT_CONNECTION_REVERSAL_REQUESTED, |
335 | GNUNET_NAT_ConnectionReversalRequestedMessage, | 336 | struct GNUNET_NAT_ConnectionReversalRequestedMessage, |
336 | nh), | 337 | nh), |
337 | GNUNET_MQ_hd_var_size (address_change_notification, | 338 | GNUNET_MQ_hd_var_size ( |
338 | GNUNET_MESSAGE_TYPE_NAT_ADDRESS_CHANGE, | 339 | address_change_notification, |
339 | struct GNUNET_NAT_AddressChangeNotificationMessage, | 340 | GNUNET_MESSAGE_TYPE_NAT_ADDRESS_CHANGE, |
340 | nh), | 341 | struct GNUNET_NAT_AddressChangeNotificationMessage, |
341 | GNUNET_MQ_handler_end () }; | 342 | nh), |
343 | GNUNET_MQ_handler_end () | ||
344 | }; | ||
342 | struct GNUNET_MQ_Envelope *env; | 345 | struct GNUNET_MQ_Envelope *env; |
343 | 346 | ||
344 | nh->reconnect_task = NULL; | 347 | nh->reconnect_task = NULL; |
345 | nh->mq = | 348 | nh->mq = |
346 | GNUNET_CLIENT_connect (nh->cfg, "nat", handlers, &mq_error_handler, nh); | 349 | GNUNET_CLIENT_connect (nh->cfg, |
350 | "nat", | ||
351 | handlers, | ||
352 | &mq_error_handler, | ||
353 | nh); | ||
347 | if (NULL == nh->mq) | 354 | if (NULL == nh->mq) |
348 | { | 355 | { |
349 | reconnect (nh); | 356 | reconnect (nh); |
350 | return; | 357 | return; |
351 | } | 358 | } |
352 | env = GNUNET_MQ_msg_copy (nh->reg); | 359 | env = GNUNET_MQ_msg_copy (nh->reg); |
353 | GNUNET_MQ_send (nh->mq, env); | 360 | GNUNET_MQ_send (nh->mq, |
361 | env); | ||
354 | } | 362 | } |
355 | 363 | ||
356 | 364 | ||
@@ -396,8 +404,9 @@ GNUNET_NAT_register (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
396 | len += addrlens[i]; | 404 | len += addrlens[i]; |
397 | str_len = strlen (config_section) + 1; | 405 | str_len = strlen (config_section) + 1; |
398 | len += str_len; | 406 | len += str_len; |
399 | if ((len > GNUNET_MAX_MESSAGE_SIZE - sizeof(*rm)) || | 407 | if ( (len > GNUNET_MAX_MESSAGE_SIZE - sizeof(*rm)) || |
400 | (num_addrs > UINT16_MAX)) | 408 | (num_addrs > UINT16_MAX) || |
409 | (str_len > UINT16_MAX) ) | ||
401 | { | 410 | { |
402 | GNUNET_break (0); | 411 | GNUNET_break (0); |
403 | return NULL; | 412 | return NULL; |
@@ -475,7 +484,7 @@ GNUNET_NAT_register (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
475 | * @return #GNUNET_YES if @a data is a STUN packet, | 484 | * @return #GNUNET_YES if @a data is a STUN packet, |
476 | * #GNUNET_NO if the packet is invalid (not a stun packet) | 485 | * #GNUNET_NO if the packet is invalid (not a stun packet) |
477 | */ | 486 | */ |
478 | static int | 487 | static enum GNUNET_GenericReturnValue |
479 | test_stun_packet (const void *data, size_t len) | 488 | test_stun_packet (const void *data, size_t len) |
480 | { | 489 | { |
481 | const struct stun_header *hdr; | 490 | const struct stun_header *hdr; |
diff --git a/src/transport/gnunet-communicator-tcp.c b/src/transport/gnunet-communicator-tcp.c index 07eb6db3a..c6c96f03e 100644 --- a/src/transport/gnunet-communicator-tcp.c +++ b/src/transport/gnunet-communicator-tcp.c | |||
@@ -2119,9 +2119,10 @@ tcp_address_to_sockaddr_port_only (const char *bindto, unsigned int *port) | |||
2119 | * @param bindto String we extract the address part from. | 2119 | * @param bindto String we extract the address part from. |
2120 | * @return The extracted address string. | 2120 | * @return The extracted address string. |
2121 | */ | 2121 | */ |
2122 | static void | 2122 | static char * |
2123 | extract_address (const char *bindto, char **addr) | 2123 | extract_address (const char *bindto) |
2124 | { | 2124 | { |
2125 | char *addr; | ||
2125 | char *start; | 2126 | char *start; |
2126 | char *token; | 2127 | char *token; |
2127 | char *cp; | 2128 | char *cp; |
@@ -2146,7 +2147,7 @@ extract_address (const char *bindto, char **addr) | |||
2146 | { | 2147 | { |
2147 | start++; /* skip over '['*/ | 2148 | start++; /* skip over '['*/ |
2148 | cp[strlen (cp) - 1] = '\0'; /* eat ']'*/ | 2149 | cp[strlen (cp) - 1] = '\0'; /* eat ']'*/ |
2149 | *addr = GNUNET_strdup (start); | 2150 | addr = GNUNET_strdup (start); |
2150 | } | 2151 | } |
2151 | else | 2152 | else |
2152 | { | 2153 | { |
@@ -2154,20 +2155,21 @@ extract_address (const char *bindto, char **addr) | |||
2154 | if (strlen (bindto) == strlen (token)) | 2155 | if (strlen (bindto) == strlen (token)) |
2155 | { | 2156 | { |
2156 | token = strtok_r (cp, ":", &rest); | 2157 | token = strtok_r (cp, ":", &rest); |
2157 | *addr = strdup (token); | 2158 | addr = GNUNET_strdup (token); |
2158 | } | 2159 | } |
2159 | else | 2160 | else |
2160 | { | 2161 | { |
2161 | token++; | 2162 | token++; |
2162 | res = GNUNET_strdup (token); | 2163 | res = GNUNET_strdup (token); |
2163 | *addr = GNUNET_strdup (res); | 2164 | addr = GNUNET_strdup (res); |
2164 | } | 2165 | } |
2165 | } | 2166 | } |
2166 | 2167 | ||
2167 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 2168 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
2168 | "tcp address: %s\n", | 2169 | "tcp address: %s\n", |
2169 | *addr); | 2170 | addr); |
2170 | GNUNET_free (cp); | 2171 | GNUNET_free (cp); |
2172 | return addr; | ||
2171 | } | 2173 | } |
2172 | 2174 | ||
2173 | 2175 | ||
@@ -3611,9 +3613,8 @@ run (void *cls, | |||
3611 | return; | 3613 | return; |
3612 | } | 3614 | } |
3613 | 3615 | ||
3614 | start = GNUNET_malloc (sizeof(bindto)); | 3616 | start = extract_address (bindto); |
3615 | extract_address (bindto, &start); | 3617 | // FIXME: check for NULL == start... |
3616 | |||
3617 | if (1 == inet_pton (AF_INET, start, &v4.sin_addr)) | 3618 | if (1 == inet_pton (AF_INET, start, &v4.sin_addr)) |
3618 | { | 3619 | { |
3619 | bind_port = extract_port (bindto); | 3620 | bind_port = extract_port (bindto); |
@@ -3669,17 +3670,19 @@ main (int argc, char *const *argv) | |||
3669 | GNUNET_log_from_nocheck (GNUNET_ERROR_TYPE_DEBUG, | 3670 | GNUNET_log_from_nocheck (GNUNET_ERROR_TYPE_DEBUG, |
3670 | "transport", | 3671 | "transport", |
3671 | "Starting tcp communicator\n"); | 3672 | "Starting tcp communicator\n"); |
3672 | 3673 | if (GNUNET_OK != | |
3673 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | 3674 | GNUNET_STRINGS_get_utf8_args (argc, argv, |
3675 | &argc, &argv)) | ||
3674 | return 2; | 3676 | return 2; |
3675 | 3677 | ||
3676 | ret = (GNUNET_OK == GNUNET_PROGRAM_run (argc, | 3678 | ret = (GNUNET_OK == |
3677 | argv, | 3679 | GNUNET_PROGRAM_run (argc, |
3678 | "gnunet-communicator-tcp", | 3680 | argv, |
3679 | _ ("GNUnet TCP communicator"), | 3681 | "gnunet-communicator-tcp", |
3680 | options, | 3682 | _ ("GNUnet TCP communicator"), |
3681 | &run, | 3683 | options, |
3682 | NULL)) | 3684 | &run, |
3685 | NULL)) | ||
3683 | ? 0 | 3686 | ? 0 |
3684 | : 1; | 3687 | : 1; |
3685 | GNUNET_free_nz ((void *) argv); | 3688 | GNUNET_free_nz ((void *) argv); |
diff --git a/src/util/mq.c b/src/util/mq.c index 9b59cd338..b09837459 100644 --- a/src/util/mq.c +++ b/src/util/mq.c | |||
@@ -273,7 +273,7 @@ GNUNET_MQ_handle_message (const struct GNUNET_MQ_MessageHandler *handlers, | |||
273 | break; | 273 | break; |
274 | } | 274 | } |
275 | } | 275 | } |
276 | done: | 276 | done: |
277 | if (GNUNET_NO == handled) | 277 | if (GNUNET_NO == handled) |
278 | { | 278 | { |
279 | LOG (GNUNET_ERROR_TYPE_INFO, | 279 | LOG (GNUNET_ERROR_TYPE_INFO, |
@@ -670,7 +670,9 @@ GNUNET_MQ_msg_copy (const struct GNUNET_MessageHeader *hdr) | |||
670 | 670 | ||
671 | mqm = GNUNET_malloc (sizeof(*mqm) + size); | 671 | mqm = GNUNET_malloc (sizeof(*mqm) + size); |
672 | mqm->mh = (struct GNUNET_MessageHeader *) &mqm[1]; | 672 | mqm->mh = (struct GNUNET_MessageHeader *) &mqm[1]; |
673 | GNUNET_memcpy (mqm->mh, hdr, size); | 673 | GNUNET_memcpy (mqm->mh, |
674 | hdr, | ||
675 | size); | ||
674 | return mqm; | 676 | return mqm; |
675 | } | 677 | } |
676 | 678 | ||
diff --git a/src/util/program.c b/src/util/program.c index b9da14572..08effa19b 100644 --- a/src/util/program.c +++ b/src/util/program.c | |||
@@ -89,9 +89,13 @@ program_main (void *cls) | |||
89 | struct CommandContext *cc = cls; | 89 | struct CommandContext *cc = cls; |
90 | 90 | ||
91 | GNUNET_SPEEDUP_start_ (cc->cfg); | 91 | GNUNET_SPEEDUP_start_ (cc->cfg); |
92 | GNUNET_SCHEDULER_add_shutdown (&shutdown_task, NULL); | 92 | GNUNET_SCHEDULER_add_shutdown (&shutdown_task, |
93 | NULL); | ||
93 | GNUNET_RESOLVER_connect (cc->cfg); | 94 | GNUNET_RESOLVER_connect (cc->cfg); |
94 | cc->task (cc->task_cls, cc->args, cc->cfgfile, cc->cfg); | 95 | cc->task (cc->task_cls, |
96 | cc->args, | ||
97 | cc->cfgfile, | ||
98 | cc->cfg); | ||
95 | } | 99 | } |
96 | 100 | ||
97 | 101 | ||
@@ -103,7 +107,8 @@ program_main (void *cls) | |||
103 | * @param a2 second command line option | 107 | * @param a2 second command line option |
104 | */ | 108 | */ |
105 | static int | 109 | static int |
106 | cmd_sorter (const void *a1, const void *a2) | 110 | cmd_sorter (const void *a1, |
111 | const void *a2) | ||
107 | { | 112 | { |
108 | const struct GNUNET_GETOPT_CommandLineOption *c1 = a1; | 113 | const struct GNUNET_GETOPT_CommandLineOption *c1 = a1; |
109 | const struct GNUNET_GETOPT_CommandLineOption *c2 = a2; | 114 | const struct GNUNET_GETOPT_CommandLineOption *c2 = a2; |