aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarshall <stmr@umich.edu>2023-05-25 14:29:29 -0400
committermarshall <stmr@umich.edu>2023-07-18 11:12:15 -0400
commitc34b23bd1d3721f83dc8f01803acb074fb272a74 (patch)
treefdef5ef7599b84b3798aea7fdbcb19c97ccdfd31
parentf0ffba50fab4420e0466e8b40cdb364df3552040 (diff)
downloadgnunet-c34b23bd1d3721f83dc8f01803acb074fb272a74.tar.gz
gnunet-c34b23bd1d3721f83dc8f01803acb074fb272a74.zip
transport (quic): handle reading data from socket
-rw-r--r--src/transport/gnunet-communicator-quic.c63
1 files changed, 50 insertions, 13 deletions
diff --git a/src/transport/gnunet-communicator-quic.c b/src/transport/gnunet-communicator-quic.c
index ecb52b158..ab7d4ec6f 100644
--- a/src/transport/gnunet-communicator-quic.c
+++ b/src/transport/gnunet-communicator-quic.c
@@ -49,6 +49,42 @@ static uint16_t my_port;
49static unsigned long long rekey_max_bytes; 49static unsigned long long rekey_max_bytes;
50 50
51/** 51/**
52 * Shutdown the UNIX communicator.
53 *
54 * @param cls NULL (always)
55 */
56static void
57do_shutdown (void *cls)
58{
59 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
60 "do_shutdown\n");
61 if (NULL != read_task)
62 {
63 GNUNET_SCHEDULER_cancel (read_task);
64 read_task = NULL;
65 }
66 if (NULL != udp_sock)
67 {
68 GNUNET_break (GNUNET_OK ==
69 GNUNET_NETWORK_socket_close (udp_sock));
70 udp_sock = NULL;
71 }
72 if (NULL != ch)
73 {
74 GNUNET_TRANSPORT_communicator_disconnect (ch);
75 ch = NULL;
76 }
77 if (NULL != ah)
78 {
79 GNUNET_TRANSPORT_application_done (ah);
80 ah = NULL;
81 }
82 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
83 "do_shutdown finished\n");
84}
85
86
87/**
52 * Convert UDP bind specification to a `struct sockaddr *` 88 * Convert UDP bind specification to a `struct sockaddr *`
53 * 89 *
54 * @param bindto bind specification to convert 90 * @param bindto bind specification to convert
@@ -190,12 +226,11 @@ sock_read (void *cls)
190 socklen_t salen = sizeof(sa); 226 socklen_t salen = sizeof(sa);
191 char buf[UINT16_MAX]; 227 char buf[UINT16_MAX];
192 ssize_t rcvd; 228 ssize_t rcvd;
193
194 (void) cls; 229 (void) cls;
195 read_task = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL, 230 // read_task = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
196 udp_sock, 231 // udp_sock,
197 &sock_read, 232 // &sock_read,
198 NULL); 233 // NULL);
199 rcvd = GNUNET_NETWORK_socket_recvfrom (udp_sock, 234 rcvd = GNUNET_NETWORK_socket_recvfrom (udp_sock,
200 buf, 235 buf,
201 sizeof(buf), 236 sizeof(buf),
@@ -537,24 +572,26 @@ run (void *cls,
537 GNUNET_break (0); 572 GNUNET_break (0);
538 my_port = 0; 573 my_port = 0;
539 } 574 }
575 GNUNET_SCHEDULER_add_shutdown (&do_shutdown, NULL);
540 /* start reading */ 576 /* start reading */
541 read_task = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL, 577 read_task = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
542 udp_sock, 578 udp_sock,
543 &sock_read, 579 &sock_read,
544 NULL); 580 NULL);
545 if (NULL == ch) 581
546 { 582 // if (NULL == ch)
547 GNUNET_break (0);
548 GNUNET_SCHEDULER_shutdown ();
549 return;
550 }
551 // ah = GNUNET_TRANSPORT_application_init (cfg);
552 // if (NULL == ah)
553 // { 583 // {
554 // GNUNET_break (0); 584 // GNUNET_break (0);
555 // GNUNET_SCHEDULER_shutdown (); 585 // GNUNET_SCHEDULER_shutdown ();
556 // return; 586 // return;
557 // } 587 // }
588 ah = GNUNET_TRANSPORT_application_init (cfg);
589 if (NULL == ah)
590 {
591 GNUNET_break (0);
592 GNUNET_SCHEDULER_shutdown ();
593 return;
594 }
558 595
559 /* start broadcasting */ 596 /* start broadcasting */
560 // if (GNUNET_YES != 597 // if (GNUNET_YES !=