aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2021-11-22 09:26:55 +0100
committerChristian Grothoff <christian@grothoff.org>2021-11-22 09:26:55 +0100
commit925886ed8eea8342c7d7a94b5250fff2f421f60f (patch)
tree14196c364b724351b645566bb0d5a1582fe133c5 /src
parent71d0c6696d2b2f1293bea1fc735d885913da6d8a (diff)
downloadgnunet-925886ed8eea8342c7d7a94b5250fff2f421f60f.tar.gz
gnunet-925886ed8eea8342c7d7a94b5250fff2f421f60f.zip
-fixes
Diffstat (limited to 'src')
-rw-r--r--src/nat/nat_api.c43
-rw-r--r--src/transport/gnunet-communicator-tcp.c39
-rw-r--r--src/util/mq.c6
-rw-r--r--src/util/program.c11
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 */
313static void 313static void
314mq_error_handler (void *cls, enum GNUNET_MQ_Error error) 314mq_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
328do_connect (void *cls) 329do_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 */
478static int 487static enum GNUNET_GenericReturnValue
479test_stun_packet (const void *data, size_t len) 488test_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 */
2122static void 2122static char *
2123extract_address (const char *bindto, char **addr) 2123extract_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: 276done:
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 */
105static int 109static int
106cmd_sorter (const void *a1, const void *a2) 110cmd_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;