aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2020-09-24 10:43:13 +0200
committerChristian Grothoff <christian@grothoff.org>2020-09-24 10:43:13 +0200
commit8fd7531e5841c9d9f80f821a3490a05934fee933 (patch)
treec36fcef38f75a7dcaf6db2b85d65c508f22c313b /src
parent1725714fabf838e699147b8f77ad6f808f7112b4 (diff)
parent87467c4aa2cfb5385d09caa021e701a419b9a9fe (diff)
downloadgnunet-8fd7531e5841c9d9f80f821a3490a05934fee933.tar.gz
gnunet-8fd7531e5841c9d9f80f821a3490a05934fee933.zip
Merge branch 'master' of git+ssh://gnunet.org/gnunet
Diffstat (limited to 'src')
-rw-r--r--src/transport/gnunet-communicator-udp.c272
1 files changed, 148 insertions, 124 deletions
diff --git a/src/transport/gnunet-communicator-udp.c b/src/transport/gnunet-communicator-udp.c
index 03c120cc9..5ca5a4e86 100644
--- a/src/transport/gnunet-communicator-udp.c
+++ b/src/transport/gnunet-communicator-udp.c
@@ -1383,6 +1383,10 @@ static void
1383consider_ss_ack (struct SharedSecret *ss) 1383consider_ss_ack (struct SharedSecret *ss)
1384{ 1384{
1385 GNUNET_assert (NULL != ss->sender); 1385 GNUNET_assert (NULL != ss->sender);
1386 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1387 "Considering SS UDPAck %s\n",
1388 GNUNET_i2s_full (&ss->sender->target));
1389
1386 /* drop ancient KeyCacheEntries */ 1390 /* drop ancient KeyCacheEntries */
1387 while ((NULL != ss->kce_head) && 1391 while ((NULL != ss->kce_head) &&
1388 (MAX_SQN_DELTA < 1392 (MAX_SQN_DELTA <
@@ -1392,8 +1396,19 @@ consider_ss_ack (struct SharedSecret *ss)
1392 { 1396 {
1393 struct UDPAck ack; 1397 struct UDPAck ack;
1394 1398
1395 while (ss->active_kce_count < KCN_TARGET) 1399 /**
1400 * If we previously have seen this ss
1401 * we now generate KCN_TARGET KCEs.
1402 * For the initial KX (active_kce_count==0),
1403 * we only generate a single KCE to prevent
1404 * unnecessary overhead.
1405 */
1406 if (0 < ss->active_kce_count) {
1407 while (ss->active_kce_count < KCN_TARGET)
1408 kce_generate (ss, ++ss->sequence_allowed);
1409 } else {
1396 kce_generate (ss, ++ss->sequence_allowed); 1410 kce_generate (ss, ++ss->sequence_allowed);
1411 }
1397 ack.header.type = htons (GNUNET_MESSAGE_TYPE_COMMUNICATOR_UDP_ACK); 1412 ack.header.type = htons (GNUNET_MESSAGE_TYPE_COMMUNICATOR_UDP_ACK);
1398 ack.header.size = htons (sizeof(ack)); 1413 ack.header.size = htons (sizeof(ack));
1399 ack.sequence_max = htonl (ss->sequence_allowed); 1414 ack.sequence_max = htonl (ss->sequence_allowed);
@@ -1515,8 +1530,8 @@ setup_sender (const struct GNUNET_PeerIdentity *target,
1515{ 1530{
1516 struct SenderAddress *sender; 1531 struct SenderAddress *sender;
1517 struct SearchContext sc = { .address = address, 1532 struct SearchContext sc = { .address = address,
1518 .address_len = address_len, 1533 .address_len = address_len,
1519 .sender = NULL }; 1534 .sender = NULL };
1520 1535
1521 GNUNET_CONTAINER_multipeermap_get_multiple (senders, 1536 GNUNET_CONTAINER_multipeermap_get_multiple (senders,
1522 target, 1537 target,
@@ -1532,10 +1547,10 @@ setup_sender (const struct GNUNET_PeerIdentity *target,
1532 sender->address = GNUNET_memdup (address, address_len); 1547 sender->address = GNUNET_memdup (address, address_len);
1533 sender->address_len = address_len; 1548 sender->address_len = address_len;
1534 (void) GNUNET_CONTAINER_multipeermap_put ( 1549 (void) GNUNET_CONTAINER_multipeermap_put (
1535 senders, 1550 senders,
1536 &sender->target, 1551 &sender->target,
1537 sender, 1552 sender,
1538 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); 1553 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
1539 GNUNET_STATISTICS_set (stats, 1554 GNUNET_STATISTICS_set (stats,
1540 "# senders active", 1555 "# senders active",
1541 GNUNET_CONTAINER_multipeermap_size (receivers), 1556 GNUNET_CONTAINER_multipeermap_size (receivers),
@@ -1572,10 +1587,10 @@ verify_confirmation (const struct GNUNET_CRYPTO_EcdhePublicKey *ephemeral,
1572 uhs.ephemeral = *ephemeral; 1587 uhs.ephemeral = *ephemeral;
1573 uhs.monotonic_time = uc->monotonic_time; 1588 uhs.monotonic_time = uc->monotonic_time;
1574 return GNUNET_CRYPTO_eddsa_verify ( 1589 return GNUNET_CRYPTO_eddsa_verify (
1575 GNUNET_SIGNATURE_COMMUNICATOR_UDP_HANDSHAKE, 1590 GNUNET_SIGNATURE_COMMUNICATOR_UDP_HANDSHAKE,
1576 &uhs, 1591 &uhs,
1577 &uc->sender_sig, 1592 &uc->sender_sig,
1578 &uc->sender.public_key); 1593 &uc->sender.public_key);
1579} 1594}
1580 1595
1581 1596
@@ -1595,22 +1610,22 @@ sockaddr_to_udpaddr_string (const struct sockaddr *address,
1595 1610
1596 switch (address->sa_family) 1611 switch (address->sa_family)
1597 { 1612 {
1598 case AF_INET: 1613 case AF_INET:
1599 GNUNET_asprintf (&ret, 1614 GNUNET_asprintf (&ret,
1600 "%s-%s", 1615 "%s-%s",
1601 COMMUNICATOR_ADDRESS_PREFIX, 1616 COMMUNICATOR_ADDRESS_PREFIX,
1602 GNUNET_a2s (address, address_len)); 1617 GNUNET_a2s (address, address_len));
1603 break; 1618 break;
1604 1619
1605 case AF_INET6: 1620 case AF_INET6:
1606 GNUNET_asprintf (&ret, 1621 GNUNET_asprintf (&ret,
1607 "%s-%s", 1622 "%s-%s",
1608 COMMUNICATOR_ADDRESS_PREFIX, 1623 COMMUNICATOR_ADDRESS_PREFIX,
1609 GNUNET_a2s (address, address_len)); 1624 GNUNET_a2s (address, address_len));
1610 break; 1625 break;
1611 1626
1612 default: 1627 default:
1613 GNUNET_assert (0); 1628 GNUNET_assert (0);
1614 } 1629 }
1615 return ret; 1630 return ret;
1616} 1631}
@@ -1715,6 +1730,9 @@ sock_read (void *cls)
1715 1730
1716 kx = (const struct InitialKX *) buf; 1731 kx = (const struct InitialKX *) buf;
1717 ss = setup_shared_secret_dec (&kx->ephemeral); 1732 ss = setup_shared_secret_dec (&kx->ephemeral);
1733 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1734 "Before DEC\n");
1735
1718 if (GNUNET_OK != try_decrypt (ss, 1736 if (GNUNET_OK != try_decrypt (ss,
1719 kx->gcm_tag, 1737 kx->gcm_tag,
1720 0, 1738 0,
@@ -1726,12 +1744,15 @@ sock_read (void *cls)
1726 "Unable to decrypt tag, dropping...\n"); 1744 "Unable to decrypt tag, dropping...\n");
1727 GNUNET_free (ss); 1745 GNUNET_free (ss);
1728 GNUNET_STATISTICS_update ( 1746 GNUNET_STATISTICS_update (
1729 stats, 1747 stats,
1730 "# messages dropped (no kid, AEAD decryption failed)", 1748 "# messages dropped (no kid, AEAD decryption failed)",
1731 1, 1749 1,
1732 GNUNET_NO); 1750 GNUNET_NO);
1733 return; 1751 return;
1734 } 1752 }
1753 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1754 "Before VERIFY\n");
1755
1735 uc = (const struct UDPConfirmation *) pbuf; 1756 uc = (const struct UDPConfirmation *) pbuf;
1736 if (GNUNET_OK != verify_confirmation (&kx->ephemeral, uc)) 1757 if (GNUNET_OK != verify_confirmation (&kx->ephemeral, uc))
1737 { 1758 {
@@ -1743,6 +1764,9 @@ sock_read (void *cls)
1743 GNUNET_NO); 1764 GNUNET_NO);
1744 return; 1765 return;
1745 } 1766 }
1767 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1768 "Before SETUP_SENDER\n");
1769
1746 calculate_cmac (ss); 1770 calculate_cmac (ss);
1747 sender = setup_sender (&uc->sender, (const struct sockaddr *) &sa, salen); 1771 sender = setup_sender (&uc->sender, (const struct sockaddr *) &sa, salen);
1748 ss->sender = sender; 1772 ss->sender = sender;
@@ -1835,9 +1859,9 @@ udp_address_to_sockaddr (const char *bindto, socklen_t *sock_len)
1835 else 1859 else
1836 { 1860 {
1837 GNUNET_log ( 1861 GNUNET_log (
1838 GNUNET_ERROR_TYPE_ERROR, 1862 GNUNET_ERROR_TYPE_ERROR,
1839 "BINDTO specification `%s' invalid: last ':' not followed by number\n", 1863 "BINDTO specification `%s' invalid: last ':' not followed by number\n",
1840 bindto); 1864 bindto);
1841 GNUNET_free (cp); 1865 GNUNET_free (cp);
1842 return NULL; 1866 return NULL;
1843 } 1867 }
@@ -1915,8 +1939,8 @@ do_pad (gcry_cipher_hd_t out_cipher, char *dgram, size_t pad_size)
1915 memcpy (pad, &hdr, sizeof(hdr)); 1939 memcpy (pad, &hdr, sizeof(hdr));
1916 } 1940 }
1917 GNUNET_assert ( 1941 GNUNET_assert (
1918 0 == 1942 0 ==
1919 gcry_cipher_encrypt (out_cipher, dgram, sizeof(pad), pad, sizeof(pad))); 1943 gcry_cipher_encrypt (out_cipher, dgram, sizeof(pad), pad, sizeof(pad)));
1920} 1944}
1921 1945
1922 1946
@@ -1983,13 +2007,13 @@ mq_send_kx (struct GNUNET_MQ_Handle *mq,
1983 dpos += sizeof(uc); 2007 dpos += sizeof(uc);
1984 /* Append encrypted payload to dgram */ 2008 /* Append encrypted payload to dgram */
1985 GNUNET_assert ( 2009 GNUNET_assert (
1986 0 == gcry_cipher_encrypt (out_cipher, &dgram[dpos], msize, msg, msize)); 2010 0 == gcry_cipher_encrypt (out_cipher, &dgram[dpos], msize, msg, msize));
1987 dpos += msize; 2011 dpos += msize;
1988 do_pad (out_cipher, &dgram[dpos], sizeof(dgram) - dpos); 2012 do_pad (out_cipher, &dgram[dpos], sizeof(dgram) - dpos);
1989 /* Datagram starts with kx */ 2013 /* Datagram starts with kx */
1990 kx.ephemeral = uhs.ephemeral; 2014 kx.ephemeral = uhs.ephemeral;
1991 GNUNET_assert ( 2015 GNUNET_assert (
1992 0 == gcry_cipher_gettag (out_cipher, kx.gcm_tag, sizeof(kx.gcm_tag))); 2016 0 == gcry_cipher_gettag (out_cipher, kx.gcm_tag, sizeof(kx.gcm_tag)));
1993 gcry_cipher_close (out_cipher); 2017 gcry_cipher_close (out_cipher);
1994 memcpy (dgram, &kx, sizeof(kx)); 2018 memcpy (dgram, &kx, sizeof(kx));
1995 if (-1 == GNUNET_NETWORK_socket_sendto (udp_sock, 2019 if (-1 == GNUNET_NETWORK_socket_sendto (udp_sock,
@@ -2050,7 +2074,7 @@ mq_send_d (struct GNUNET_MQ_Handle *mq,
2050 /* Append encrypted payload to dgram */ 2074 /* Append encrypted payload to dgram */
2051 dpos = sizeof(struct UDPBox); 2075 dpos = sizeof(struct UDPBox);
2052 GNUNET_assert ( 2076 GNUNET_assert (
2053 0 == gcry_cipher_encrypt (out_cipher, &dgram[dpos], msize, msg, msize)); 2077 0 == gcry_cipher_encrypt (out_cipher, &dgram[dpos], msize, msg, msize));
2054 dpos += msize; 2078 dpos += msize;
2055 do_pad (out_cipher, &dgram[dpos], sizeof(dgram) - dpos); 2079 do_pad (out_cipher, &dgram[dpos], sizeof(dgram) - dpos);
2056 GNUNET_assert (0 == gcry_cipher_gettag (out_cipher, 2080 GNUNET_assert (0 == gcry_cipher_gettag (out_cipher,
@@ -2169,37 +2193,37 @@ setup_receiver_mq (struct ReceiverAddress *receiver)
2169 size_t base_mtu; 2193 size_t base_mtu;
2170 2194
2171 /*if (NULL != receiver->kx_qh) 2195 /*if (NULL != receiver->kx_qh)
2172 { 2196 {
2173 GNUNET_TRANSPORT_communicator_mq_del (receiver->kx_qh); 2197 GNUNET_TRANSPORT_communicator_mq_del (receiver->kx_qh);
2174 receiver->kx_qh = NULL; 2198 receiver->kx_qh = NULL;
2175 } 2199 }
2176 if (NULL != receiver->d_qh) 2200 if (NULL != receiver->d_qh)
2177 { 2201 {
2178 GNUNET_TRANSPORT_communicator_mq_del (receiver->d_qh); 2202 GNUNET_TRANSPORT_communicator_mq_del (receiver->d_qh);
2179 receiver->d_qh = NULL; 2203 receiver->d_qh = NULL;
2180 }*/ 2204 }*/
2181 // GNUNET_assert (NULL == receiver->mq); 2205 // GNUNET_assert (NULL == receiver->mq);
2182 switch (receiver->address->sa_family) 2206 switch (receiver->address->sa_family)
2183 { 2207 {
2184 case AF_INET: 2208 case AF_INET:
2185 base_mtu = 1480 /* Ethernet MTU, 1500 - Ethernet header - VLAN tag */ 2209 base_mtu = 1480 /* Ethernet MTU, 1500 - Ethernet header - VLAN tag */
2186 - sizeof(struct GNUNET_TUN_IPv4Header) /* 20 */ 2210 - sizeof(struct GNUNET_TUN_IPv4Header) /* 20 */
2187 - sizeof(struct GNUNET_TUN_UdpHeader) /* 8 */; 2211 - sizeof(struct GNUNET_TUN_UdpHeader) /* 8 */;
2188 break; 2212 break;
2189 2213
2190 case AF_INET6: 2214 case AF_INET6:
2191 base_mtu = 1280 /* Minimum MTU required by IPv6 */ 2215 base_mtu = 1280 /* Minimum MTU required by IPv6 */
2192 - sizeof(struct GNUNET_TUN_IPv6Header) /* 40 */ 2216 - sizeof(struct GNUNET_TUN_IPv6Header) /* 40 */
2193 - sizeof(struct GNUNET_TUN_UdpHeader) /* 8 */; 2217 - sizeof(struct GNUNET_TUN_UdpHeader) /* 8 */;
2194 break; 2218 break;
2195 2219
2196 default: 2220 default:
2197 GNUNET_assert (0); 2221 GNUNET_assert (0);
2198 break; 2222 break;
2199 } 2223 }
2200 /* MTU based on full KX messages */ 2224 /* MTU based on full KX messages */
2201 receiver->kx_mtu = base_mtu - sizeof(struct InitialKX) /* 48 */ 2225 receiver->kx_mtu = base_mtu - sizeof(struct InitialKX) /* 48 */
2202 - sizeof(struct UDPConfirmation); /* 104 */ 2226 - sizeof(struct UDPConfirmation); /* 104 */
2203 /* MTU based on BOXed messages */ 2227 /* MTU based on BOXed messages */
2204 receiver->d_mtu = base_mtu - sizeof(struct UDPBox); 2228 receiver->d_mtu = base_mtu - sizeof(struct UDPBox);
2205 2229
@@ -2290,10 +2314,10 @@ mq_init (void *cls, const struct GNUNET_PeerIdentity *peer, const char *address)
2290 receiver->target = *peer; 2314 receiver->target = *peer;
2291 receiver->nt = GNUNET_NT_scanner_get_type (is, in, in_len); 2315 receiver->nt = GNUNET_NT_scanner_get_type (is, in, in_len);
2292 (void) GNUNET_CONTAINER_multipeermap_put ( 2316 (void) GNUNET_CONTAINER_multipeermap_put (
2293 receivers, 2317 receivers,
2294 &receiver->target, 2318 &receiver->target,
2295 receiver, 2319 receiver,
2296 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); 2320 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
2297 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 2321 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2298 "Added %s to receivers\n", 2322 "Added %s to receivers\n",
2299 GNUNET_i2s_full (&receiver->target)); 2323 GNUNET_i2s_full (&receiver->target));
@@ -2529,55 +2553,55 @@ ifc_broadcast (void *cls)
2529 2553
2530 switch (bi->sa->sa_family) 2554 switch (bi->sa->sa_family)
2531 { 2555 {
2532 case AF_INET: { 2556 case AF_INET: {
2533 static int yes = 1; 2557 static int yes = 1;
2534 static int no = 0; 2558 static int no = 0;
2535 ssize_t sent; 2559 ssize_t sent;
2536 2560
2537 if (GNUNET_OK != GNUNET_NETWORK_socket_setsockopt (udp_sock, 2561 if (GNUNET_OK != GNUNET_NETWORK_socket_setsockopt (udp_sock,
2538 SOL_SOCKET, 2562 SOL_SOCKET,
2539 SO_BROADCAST, 2563 SO_BROADCAST,
2540 &yes, 2564 &yes,
2541 sizeof(int))) 2565 sizeof(int)))
2542 GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "setsockopt"); 2566 GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "setsockopt");
2543 sent = GNUNET_NETWORK_socket_sendto (udp_sock, 2567 sent = GNUNET_NETWORK_socket_sendto (udp_sock,
2544 &bi->bcm, 2568 &bi->bcm,
2545 sizeof(bi->bcm), 2569 sizeof(bi->bcm),
2546 bi->ba, 2570 bi->ba,
2547 bi->salen); 2571 bi->salen);
2548 if (-1 == sent) 2572 if (-1 == sent)
2549 GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "sendto"); 2573 GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "sendto");
2550 if (GNUNET_OK != GNUNET_NETWORK_socket_setsockopt (udp_sock, 2574 if (GNUNET_OK != GNUNET_NETWORK_socket_setsockopt (udp_sock,
2551 SOL_SOCKET, 2575 SOL_SOCKET,
2552 SO_BROADCAST, 2576 SO_BROADCAST,
2553 &no, 2577 &no,
2554 sizeof(int))) 2578 sizeof(int)))
2555 GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "setsockopt"); 2579 GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "setsockopt");
2556 break; 2580 break;
2557 } 2581 }
2558 2582
2559 case AF_INET6: { 2583 case AF_INET6: {
2560 ssize_t sent; 2584 ssize_t sent;
2561 struct sockaddr_in6 dst; 2585 struct sockaddr_in6 dst;
2562 2586
2563 dst.sin6_family = AF_INET6; 2587 dst.sin6_family = AF_INET6;
2564 dst.sin6_port = htons (my_port); 2588 dst.sin6_port = htons (my_port);
2565 dst.sin6_addr = bi->mcreq.ipv6mr_multiaddr; 2589 dst.sin6_addr = bi->mcreq.ipv6mr_multiaddr;
2566 dst.sin6_scope_id = ((struct sockaddr_in6 *) bi->ba)->sin6_scope_id; 2590 dst.sin6_scope_id = ((struct sockaddr_in6 *) bi->ba)->sin6_scope_id;
2567 2591
2568 sent = GNUNET_NETWORK_socket_sendto (udp_sock, 2592 sent = GNUNET_NETWORK_socket_sendto (udp_sock,
2569 &bi->bcm, 2593 &bi->bcm,
2570 sizeof(bi->bcm), 2594 sizeof(bi->bcm),
2571 (const struct sockaddr *) &dst, 2595 (const struct sockaddr *) &dst,
2572 sizeof(dst)); 2596 sizeof(dst));
2573 if (-1 == sent) 2597 if (-1 == sent)
2574 GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "sendto"); 2598 GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "sendto");
2575 break; 2599 break;
2576 } 2600 }
2577 2601
2578 default: 2602 default:
2579 GNUNET_break (0); 2603 GNUNET_break (0);
2580 break; 2604 break;
2581 } 2605 }
2582} 2606}
2583 2607
@@ -2659,7 +2683,7 @@ iface_proc (void *cls,
2659 (const struct sockaddr_in6 *) broadcast_addr; 2683 (const struct sockaddr_in6 *) broadcast_addr;
2660 2684
2661 GNUNET_assert ( 2685 GNUNET_assert (
2662 1 == inet_pton (AF_INET6, "FF05::13B", &bi->mcreq.ipv6mr_multiaddr)); 2686 1 == inet_pton (AF_INET6, "FF05::13B", &bi->mcreq.ipv6mr_multiaddr));
2663 2687
2664 /* http://tools.ietf.org/html/rfc2553#section-5.2: 2688 /* http://tools.ietf.org/html/rfc2553#section-5.2:
2665 * 2689 *
@@ -2796,17 +2820,17 @@ run (void *cls,
2796 GNUNET_a2s ((const struct sockaddr *) &in_sto, sto_len)); 2820 GNUNET_a2s ((const struct sockaddr *) &in_sto, sto_len));
2797 switch (in->sa_family) 2821 switch (in->sa_family)
2798 { 2822 {
2799 case AF_INET: 2823 case AF_INET:
2800 my_port = ntohs (((struct sockaddr_in *) in)->sin_port); 2824 my_port = ntohs (((struct sockaddr_in *) in)->sin_port);
2801 break; 2825 break;
2802 2826
2803 case AF_INET6: 2827 case AF_INET6:
2804 my_port = ntohs (((struct sockaddr_in6 *) in)->sin6_port); 2828 my_port = ntohs (((struct sockaddr_in6 *) in)->sin6_port);
2805 break; 2829 break;
2806 2830
2807 default: 2831 default:
2808 GNUNET_break (0); 2832 GNUNET_break (0);
2809 my_port = 0; 2833 my_port = 0;
2810 } 2834 }
2811 stats = GNUNET_STATISTICS_create ("C-UDP", cfg); 2835 stats = GNUNET_STATISTICS_create ("C-UDP", cfg);
2812 senders = GNUNET_CONTAINER_multipeermap_create (32, GNUNET_YES); 2836 senders = GNUNET_CONTAINER_multipeermap_create (32, GNUNET_YES);
@@ -2821,9 +2845,9 @@ run (void *cls,
2821 if (NULL == my_private_key) 2845 if (NULL == my_private_key)
2822 { 2846 {
2823 GNUNET_log ( 2847 GNUNET_log (
2824 GNUNET_ERROR_TYPE_ERROR, 2848 GNUNET_ERROR_TYPE_ERROR,
2825 _ ( 2849 _ (
2826 "Transport service is lacking key configuration settings. Exiting.\n")); 2850 "Transport service is lacking key configuration settings. Exiting.\n"));
2827 GNUNET_SCHEDULER_shutdown (); 2851 GNUNET_SCHEDULER_shutdown ();
2828 return; 2852 return;
2829 } 2853 }
@@ -2899,8 +2923,8 @@ main (int argc, char *const *argv)
2899 options, 2923 options,
2900 &run, 2924 &run,
2901 NULL)) 2925 NULL))
2902 ? 0 2926 ? 0
2903 : 1; 2927 : 1;
2904 GNUNET_free_nz ((void *) argv); 2928 GNUNET_free_nz ((void *) argv);
2905 return ret; 2929 return ret;
2906} 2930}