aboutsummaryrefslogtreecommitdiff
path: root/src/transport/plugin_transport_udp.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2015-02-28 14:35:13 +0000
committerChristian Grothoff <christian@grothoff.org>2015-02-28 14:35:13 +0000
commit0d94b5ea4c38d3a95975fe34cf8542d04e1bb68c (patch)
tree49ff8afde38bd679e8f62c266fd40983cc3c0a1b /src/transport/plugin_transport_udp.c
parent37079402ef1ba6e9a78d878d8d321e4d67c492ae (diff)
downloadgnunet-0d94b5ea4c38d3a95975fe34cf8542d04e1bb68c.tar.gz
gnunet-0d94b5ea4c38d3a95975fe34cf8542d04e1bb68c.zip
-fix indentation, logging, i18n, doxygen
Diffstat (limited to 'src/transport/plugin_transport_udp.c')
-rw-r--r--src/transport/plugin_transport_udp.c131
1 files changed, 67 insertions, 64 deletions
diff --git a/src/transport/plugin_transport_udp.c b/src/transport/plugin_transport_udp.c
index 38210f322..4c6a01132 100644
--- a/src/transport/plugin_transport_udp.c
+++ b/src/transport/plugin_transport_udp.c
@@ -508,7 +508,7 @@ notify_session_monitor (struct Plugin *plugin,
508 struct GNUNET_TRANSPORT_SessionInfo info; 508 struct GNUNET_TRANSPORT_SessionInfo info;
509 509
510 if (NULL == plugin->sic) 510 if (NULL == plugin->sic)
511 return; 511 return;
512 if (GNUNET_YES == session->in_destroy) 512 if (GNUNET_YES == session->in_destroy)
513 return; /* already destroyed, just RC>0 left-over actions */ 513 return; /* already destroyed, just RC>0 left-over actions */
514 memset (&info, 0, sizeof (info)); 514 memset (&info, 0, sizeof (info));
@@ -937,7 +937,7 @@ call_continuation (struct UDP_MessageWrapper *udpw,
937 937
938 LOG (GNUNET_ERROR_TYPE_DEBUG, 938 LOG (GNUNET_ERROR_TYPE_DEBUG,
939 "Calling continuation for %u byte message to `%s' with result %s\n", 939 "Calling continuation for %u byte message to `%s' with result %s\n",
940 udpw->payload_size, 940 udpw->payload_size,
941 GNUNET_i2s (&udpw->session->target), 941 GNUNET_i2s (&udpw->session->target),
942 (GNUNET_OK == result) ? "OK" : "SYSERR"); 942 (GNUNET_OK == result) ? "OK" : "SYSERR");
943 943
@@ -958,7 +958,7 @@ call_continuation (struct UDP_MessageWrapper *udpw,
958 udpw->cont (udpw->cont_cls, 958 udpw->cont (udpw->cont_cls,
959 &udpw->session->target, 959 &udpw->session->target,
960 result, 960 result,
961 udpw->payload_size, 961 udpw->payload_size,
962 udpw->msg_size); 962 udpw->msg_size);
963 } 963 }
964 GNUNET_STATISTICS_update (plugin->env->stats, 964 GNUNET_STATISTICS_update (plugin->env->stats,
@@ -967,48 +967,48 @@ call_continuation (struct UDP_MessageWrapper *udpw,
967 GNUNET_NO); 967 GNUNET_NO);
968 GNUNET_STATISTICS_update (plugin->env->stats, 968 GNUNET_STATISTICS_update (plugin->env->stats,
969 "# UDP, unfragmented msgs, bytes payload, sent, success", 969 "# UDP, unfragmented msgs, bytes payload, sent, success",
970 udpw->payload_size, 970 udpw->payload_size,
971 GNUNET_NO); 971 GNUNET_NO);
972 GNUNET_STATISTICS_update (plugin->env->stats, 972 GNUNET_STATISTICS_update (plugin->env->stats,
973 "# UDP, unfragmented msgs, bytes overhead, sent, success", 973 "# UDP, unfragmented msgs, bytes overhead, sent, success",
974 overhead, 974 overhead,
975 GNUNET_NO); 975 GNUNET_NO);
976 GNUNET_STATISTICS_update (plugin->env->stats, 976 GNUNET_STATISTICS_update (plugin->env->stats,
977 "# UDP, total, bytes overhead, sent", 977 "# UDP, total, bytes overhead, sent",
978 overhead, 978 overhead,
979 GNUNET_NO); 979 GNUNET_NO);
980 GNUNET_STATISTICS_update (plugin->env->stats, 980 GNUNET_STATISTICS_update (plugin->env->stats,
981 "# UDP, total, bytes payload, sent", 981 "# UDP, total, bytes payload, sent",
982 udpw->payload_size, 982 udpw->payload_size,
983 GNUNET_NO); 983 GNUNET_NO);
984 break; 984 break;
985 case UMT_MSG_FRAGMENTED_COMPLETE: 985 case UMT_MSG_FRAGMENTED_COMPLETE:
986 GNUNET_assert(NULL != udpw->frag_ctx); 986 GNUNET_assert(NULL != udpw->frag_ctx);
987 if (udpw->frag_ctx->cont != NULL ) 987 if (udpw->frag_ctx->cont != NULL )
988 udpw->frag_ctx->cont (udpw->frag_ctx->cont_cls, 988 udpw->frag_ctx->cont (udpw->frag_ctx->cont_cls,
989 &udpw->session->target, 989 &udpw->session->target,
990 GNUNET_OK, 990 GNUNET_OK,
991 udpw->frag_ctx->payload_size, 991 udpw->frag_ctx->payload_size,
992 udpw->frag_ctx->on_wire_size); 992 udpw->frag_ctx->on_wire_size);
993 GNUNET_STATISTICS_update (plugin->env->stats, 993 GNUNET_STATISTICS_update (plugin->env->stats,
994 "# UDP, fragmented msgs, messages, sent, success", 994 "# UDP, fragmented msgs, messages, sent, success",
995 1, 995 1,
996 GNUNET_NO); 996 GNUNET_NO);
997 GNUNET_STATISTICS_update (plugin->env->stats, 997 GNUNET_STATISTICS_update (plugin->env->stats,
998 "# UDP, fragmented msgs, bytes payload, sent, success", 998 "# UDP, fragmented msgs, bytes payload, sent, success",
999 udpw->payload_size, 999 udpw->payload_size,
1000 GNUNET_NO); 1000 GNUNET_NO);
1001 GNUNET_STATISTICS_update (plugin->env->stats, 1001 GNUNET_STATISTICS_update (plugin->env->stats,
1002 "# UDP, fragmented msgs, bytes overhead, sent, success", 1002 "# UDP, fragmented msgs, bytes overhead, sent, success",
1003 overhead, 1003 overhead,
1004 GNUNET_NO); 1004 GNUNET_NO);
1005 GNUNET_STATISTICS_update (plugin->env->stats, 1005 GNUNET_STATISTICS_update (plugin->env->stats,
1006 "# UDP, total, bytes overhead, sent", 1006 "# UDP, total, bytes overhead, sent",
1007 overhead, 1007 overhead,
1008 GNUNET_NO); 1008 GNUNET_NO);
1009 GNUNET_STATISTICS_update (plugin->env->stats, 1009 GNUNET_STATISTICS_update (plugin->env->stats,
1010 "# UDP, total, bytes payload, sent", 1010 "# UDP, total, bytes payload, sent",
1011 udpw->payload_size, 1011 udpw->payload_size,
1012 GNUNET_NO); 1012 GNUNET_NO);
1013 GNUNET_STATISTICS_update (plugin->env->stats, 1013 GNUNET_STATISTICS_update (plugin->env->stats,
1014 "# UDP, fragmented msgs, messages, pending", 1014 "# UDP, fragmented msgs, messages, pending",
@@ -1018,13 +1018,13 @@ call_continuation (struct UDP_MessageWrapper *udpw,
1018 case UMT_MSG_FRAGMENTED: 1018 case UMT_MSG_FRAGMENTED:
1019 /* Fragmented message: enqueue next fragment */ 1019 /* Fragmented message: enqueue next fragment */
1020 if (NULL != udpw->cont) 1020 if (NULL != udpw->cont)
1021 udpw->cont (udpw->cont_cls, 1021 udpw->cont (udpw->cont_cls,
1022 &udpw->session->target, 1022 &udpw->session->target,
1023 result, 1023 result,
1024 udpw->payload_size, 1024 udpw->payload_size,
1025 udpw->msg_size); 1025 udpw->msg_size);
1026 GNUNET_STATISTICS_update (plugin->env->stats, 1026 GNUNET_STATISTICS_update (plugin->env->stats,
1027 "# UDP, fragmented msgs, fragments, sent, success", 1027 "# UDP, fragmented msgs, fragments, sent, success",
1028 1, 1028 1,
1029 GNUNET_NO); 1029 GNUNET_NO);
1030 GNUNET_STATISTICS_update (plugin->env->stats, 1030 GNUNET_STATISTICS_update (plugin->env->stats,
@@ -1035,7 +1035,7 @@ call_continuation (struct UDP_MessageWrapper *udpw,
1035 case UMT_MSG_ACK: 1035 case UMT_MSG_ACK:
1036 /* No continuation */ 1036 /* No continuation */
1037 GNUNET_STATISTICS_update (plugin->env->stats, 1037 GNUNET_STATISTICS_update (plugin->env->stats,
1038 "# UDP, ACK msgs, messages, sent, success", 1038 "# UDP, ACK msgs, messages, sent, success",
1039 1, 1039 1,
1040 GNUNET_NO); 1040 GNUNET_NO);
1041 GNUNET_STATISTICS_update (plugin->env->stats, 1041 GNUNET_STATISTICS_update (plugin->env->stats,
@@ -1044,7 +1044,7 @@ call_continuation (struct UDP_MessageWrapper *udpw,
1044 GNUNET_NO); 1044 GNUNET_NO);
1045 GNUNET_STATISTICS_update (plugin->env->stats, 1045 GNUNET_STATISTICS_update (plugin->env->stats,
1046 "# UDP, total, bytes overhead, sent", 1046 "# UDP, total, bytes overhead, sent",
1047 overhead, 1047 overhead,
1048 GNUNET_NO); 1048 GNUNET_NO);
1049 break; 1049 break;
1050 default: 1050 default:
@@ -1061,7 +1061,7 @@ call_continuation (struct UDP_MessageWrapper *udpw,
1061 udpw->cont (udpw->cont_cls, 1061 udpw->cont (udpw->cont_cls,
1062 &udpw->session->target, 1062 &udpw->session->target,
1063 result, 1063 result,
1064 udpw->payload_size, 1064 udpw->payload_size,
1065 overhead); 1065 overhead);
1066 GNUNET_STATISTICS_update (plugin->env->stats, 1066 GNUNET_STATISTICS_update (plugin->env->stats,
1067 "# UDP, unfragmented msgs, messages, sent, failure", 1067 "# UDP, unfragmented msgs, messages, sent, failure",
@@ -1069,31 +1069,31 @@ call_continuation (struct UDP_MessageWrapper *udpw,
1069 GNUNET_NO); 1069 GNUNET_NO);
1070 GNUNET_STATISTICS_update (plugin->env->stats, 1070 GNUNET_STATISTICS_update (plugin->env->stats,
1071 "# UDP, unfragmented msgs, bytes payload, sent, failure", 1071 "# UDP, unfragmented msgs, bytes payload, sent, failure",
1072 udpw->payload_size, 1072 udpw->payload_size,
1073 GNUNET_NO); 1073 GNUNET_NO);
1074 GNUNET_STATISTICS_update (plugin->env->stats, 1074 GNUNET_STATISTICS_update (plugin->env->stats,
1075 "# UDP, unfragmented msgs, bytes overhead, sent, failure", 1075 "# UDP, unfragmented msgs, bytes overhead, sent, failure",
1076 overhead, 1076 overhead,
1077 GNUNET_NO); 1077 GNUNET_NO);
1078 break; 1078 break;
1079 case UMT_MSG_FRAGMENTED_COMPLETE: 1079 case UMT_MSG_FRAGMENTED_COMPLETE:
1080 GNUNET_assert (NULL != udpw->frag_ctx); 1080 GNUNET_assert (NULL != udpw->frag_ctx);
1081 if (udpw->frag_ctx->cont != NULL) 1081 if (udpw->frag_ctx->cont != NULL)
1082 udpw->frag_ctx->cont (udpw->frag_ctx->cont_cls, 1082 udpw->frag_ctx->cont (udpw->frag_ctx->cont_cls,
1083 &udpw->session->target, 1083 &udpw->session->target,
1084 GNUNET_SYSERR, 1084 GNUNET_SYSERR,
1085 udpw->frag_ctx->payload_size, 1085 udpw->frag_ctx->payload_size,
1086 udpw->frag_ctx->on_wire_size); 1086 udpw->frag_ctx->on_wire_size);
1087 GNUNET_STATISTICS_update (plugin->env->stats, 1087 GNUNET_STATISTICS_update (plugin->env->stats,
1088 "# UDP, fragmented msgs, messages, sent, failure", 1088 "# UDP, fragmented msgs, messages, sent, failure",
1089 1, 1089 1,
1090 GNUNET_NO); 1090 GNUNET_NO);
1091 GNUNET_STATISTICS_update (plugin->env->stats, 1091 GNUNET_STATISTICS_update (plugin->env->stats,
1092 "# UDP, fragmented msgs, bytes payload, sent, failure", 1092 "# UDP, fragmented msgs, bytes payload, sent, failure",
1093 udpw->payload_size, 1093 udpw->payload_size,
1094 GNUNET_NO); 1094 GNUNET_NO);
1095 GNUNET_STATISTICS_update (plugin->env->stats, 1095 GNUNET_STATISTICS_update (plugin->env->stats,
1096 "# UDP, fragmented msgs, bytes payload, sent, failure", 1096 "# UDP, fragmented msgs, bytes payload, sent, failure",
1097 overhead, 1097 overhead,
1098 GNUNET_NO); 1098 GNUNET_NO);
1099 GNUNET_STATISTICS_update (plugin->env->stats, 1099 GNUNET_STATISTICS_update (plugin->env->stats,
@@ -1109,7 +1109,7 @@ call_continuation (struct UDP_MessageWrapper *udpw,
1109 GNUNET_assert (NULL != udpw->frag_ctx); 1109 GNUNET_assert (NULL != udpw->frag_ctx);
1110 /* Fragmented message: failed to send */ 1110 /* Fragmented message: failed to send */
1111 GNUNET_STATISTICS_update (plugin->env->stats, 1111 GNUNET_STATISTICS_update (plugin->env->stats,
1112 "# UDP, fragmented msgs, fragments, sent, failure", 1112 "# UDP, fragmented msgs, fragments, sent, failure",
1113 1, 1113 1,
1114 GNUNET_NO); 1114 GNUNET_NO);
1115 GNUNET_STATISTICS_update (plugin->env->stats, 1115 GNUNET_STATISTICS_update (plugin->env->stats,
@@ -1120,7 +1120,7 @@ call_continuation (struct UDP_MessageWrapper *udpw,
1120 case UMT_MSG_ACK: 1120 case UMT_MSG_ACK:
1121 /* ACK message: failed to send */ 1121 /* ACK message: failed to send */
1122 GNUNET_STATISTICS_update (plugin->env->stats, 1122 GNUNET_STATISTICS_update (plugin->env->stats,
1123 "# UDP, ACK msgs, messages, sent, failure", 1123 "# UDP, ACK msgs, messages, sent, failure",
1124 1, 1124 1,
1125 GNUNET_NO); 1125 GNUNET_NO);
1126 break; 1126 break;
@@ -1411,7 +1411,8 @@ udp_disconnect_session (void *cls,
1411 1411
1412 GNUNET_assert (GNUNET_YES != s->in_destroy); 1412 GNUNET_assert (GNUNET_YES != s->in_destroy);
1413 LOG (GNUNET_ERROR_TYPE_DEBUG, 1413 LOG (GNUNET_ERROR_TYPE_DEBUG,
1414 "Session %p to peer `%s' address ended\n", s, 1414 "Session %p to peer `%s' address ended\n",
1415 s,
1415 GNUNET_i2s (&s->target), 1416 GNUNET_i2s (&s->target),
1416 udp_address_to_string (plugin, 1417 udp_address_to_string (plugin,
1417 s->address->address, 1418 s->address->address,
@@ -1674,15 +1675,8 @@ session_cmp_it (void *cls,
1674 const struct GNUNET_HELLO_Address *address = cctx->address; 1675 const struct GNUNET_HELLO_Address *address = cctx->address;
1675 struct Session *s = value; 1676 struct Session *s = value;
1676 1677
1677 LOG (GNUNET_ERROR_TYPE_DEBUG, 1678 if (0 == GNUNET_HELLO_address_cmp (s->address,
1678 "Comparing address %s <-> %s\n", 1679 cctx->address))
1679 udp_address_to_string (s->plugin,
1680 address->address,
1681 address->address_length),
1682 udp_address_to_string (s->plugin,
1683 s->address->address,
1684 s->address->address_length));
1685 if (0 == GNUNET_HELLO_address_cmp(s->address, cctx->address))
1686 { 1680 {
1687 cctx->res = s; 1681 cctx->res = s;
1688 return GNUNET_NO; 1682 return GNUNET_NO;
@@ -1714,7 +1708,7 @@ udp_plugin_lookup_session (void *cls,
1714 (address->address_length != sizeof (struct IPv6UdpAddress)))) 1708 (address->address_length != sizeof (struct IPv6UdpAddress))))
1715 { 1709 {
1716 LOG (GNUNET_ERROR_TYPE_WARNING, 1710 LOG (GNUNET_ERROR_TYPE_WARNING,
1717 _("Trying to locate session for address of unexpected length %u (should be %u or %u)\n"), 1711 "Trying to locate session for address of unexpected length %u (should be %u or %u)\n",
1718 address->address_length, 1712 address->address_length,
1719 sizeof (struct IPv4UdpAddress), 1713 sizeof (struct IPv4UdpAddress),
1720 sizeof (struct IPv6UdpAddress)); 1714 sizeof (struct IPv6UdpAddress));
@@ -1911,8 +1905,8 @@ udp_plugin_get_session (void *cls,
1911 (const struct sockaddr *) &v6, 1905 (const struct sockaddr *) &v6,
1912 sizeof (v6)); 1906 sizeof (v6));
1913 } 1907 }
1914 return udp_plugin_create_session (cls, 1908 return udp_plugin_create_session (cls,
1915 address, 1909 address,
1916 network_type); 1910 network_type);
1917} 1911}
1918 1912
@@ -2492,8 +2486,7 @@ read_process_ack (struct Plugin *plugin,
2492 GNUNET_HELLO_ADDRESS_INFO_NONE); 2486 GNUNET_HELLO_ADDRESS_INFO_NONE);
2493 s = udp_plugin_lookup_session (plugin, 2487 s = udp_plugin_lookup_session (plugin,
2494 address); 2488 address);
2495 if ( (NULL == s) || 2489 if (NULL == s)
2496 (NULL == s->frag_ctx) )
2497 { 2490 {
2498 LOG (GNUNET_ERROR_TYPE_WARNING, 2491 LOG (GNUNET_ERROR_TYPE_WARNING,
2499 "UDP session of address %s for ACK not found\n", 2492 "UDP session of address %s for ACK not found\n",
@@ -2503,6 +2496,16 @@ read_process_ack (struct Plugin *plugin,
2503 GNUNET_HELLO_address_free (address); 2496 GNUNET_HELLO_address_free (address);
2504 return; 2497 return;
2505 } 2498 }
2499 if (NULL == s->frag_ctx)
2500 {
2501 LOG (GNUNET_ERROR_TYPE_WARNING,
2502 "Fragmentation context of address %s for ACK not found\n",
2503 udp_address_to_string (plugin,
2504 address->address,
2505 address->address_length));
2506 GNUNET_HELLO_address_free (address);
2507 return;
2508 }
2506 GNUNET_HELLO_address_free (address); 2509 GNUNET_HELLO_address_free (address);
2507 2510
2508 flow_delay.rel_value_us = (uint64_t) ntohl (udp_ack->delay); 2511 flow_delay.rel_value_us = (uint64_t) ntohl (udp_ack->delay);
@@ -2858,13 +2861,13 @@ remove_timeout_messages_and_select (struct Plugin *plugin,
2858 "# UDP, total, messages, sent, timeout", 2861 "# UDP, total, messages, sent, timeout",
2859 1, 2862 1,
2860 GNUNET_NO); 2863 GNUNET_NO);
2861 call_continuation (udpw, 2864 call_continuation (udpw,
2862 GNUNET_SYSERR); 2865 GNUNET_SYSERR);
2863 LOG (GNUNET_ERROR_TYPE_DEBUG, 2866 LOG (GNUNET_ERROR_TYPE_DEBUG,
2864 "Fragment for message for peer `%s' with size %u timed out\n", 2867 "Fragment for message for peer `%s' with size %u timed out\n",
2865 GNUNET_i2s (&udpw->session->target), 2868 GNUNET_i2s (&udpw->session->target),
2866 udpw->frag_ctx->payload_size); 2869 udpw->frag_ctx->payload_size);
2867 2870
2868 GNUNET_STATISTICS_update (plugin->env->stats, 2871 GNUNET_STATISTICS_update (plugin->env->stats,
2869 "# UDP, fragmented msgs, messages, sent, timeout", 2872 "# UDP, fragmented msgs, messages, sent, timeout",
2870 1, 2873 1,
@@ -2874,7 +2877,7 @@ remove_timeout_messages_and_select (struct Plugin *plugin,
2874 udpw->frag_ctx->payload_size, 2877 udpw->frag_ctx->payload_size,
2875 GNUNET_NO); 2878 GNUNET_NO);
2876 /* Remove fragmented message due to timeout */ 2879 /* Remove fragmented message due to timeout */
2877 fragmented_message_done (udpw->frag_ctx, 2880 fragmented_message_done (udpw->frag_ctx,
2878 GNUNET_SYSERR); 2881 GNUNET_SYSERR);
2879 break; 2882 break;
2880 case UMT_MSG_ACK: 2883 case UMT_MSG_ACK:
@@ -2893,7 +2896,7 @@ remove_timeout_messages_and_select (struct Plugin *plugin,
2893 call_continuation (udpw, 2896 call_continuation (udpw,
2894 GNUNET_SYSERR); 2897 GNUNET_SYSERR);
2895 removed = GNUNET_YES; 2898 removed = GNUNET_YES;
2896 dequeue (plugin, 2899 dequeue (plugin,
2897 udpw); 2900 udpw);
2898 GNUNET_free (udpw); 2901 GNUNET_free (udpw);
2899 break; 2902 break;
@@ -2932,9 +2935,9 @@ remove_timeout_messages_and_select (struct Plugin *plugin,
2932 /* Message is delayed, try next */ 2935 /* Message is delayed, try next */
2933 LOG (GNUNET_ERROR_TYPE_DEBUG, 2936 LOG (GNUNET_ERROR_TYPE_DEBUG,
2934 "Message for peer `%s' (%u bytes) is delayed for %s\n", 2937 "Message for peer `%s' (%u bytes) is delayed for %s\n",
2935 GNUNET_i2s (&udpw->session->target), 2938 GNUNET_i2s (&udpw->session->target),
2936 udpw->payload_size, 2939 udpw->payload_size,
2937 GNUNET_STRINGS_relative_time_to_string (remaining, 2940 GNUNET_STRINGS_relative_time_to_string (remaining,
2938 GNUNET_YES)); 2941 GNUNET_YES));
2939 udpw = udpw->next; 2942 udpw = udpw->next;
2940 } 2943 }
@@ -3034,7 +3037,7 @@ udp_select_send (struct Plugin *plugin,
3034#endif 3037#endif
3035 a4.sin_port = u4->u4_port; 3038 a4.sin_port = u4->u4_port;
3036 memcpy (&a4.sin_addr, 3039 memcpy (&a4.sin_addr,
3037 &u4->ipv4_addr, 3040 &u4->ipv4_addr,
3038 sizeof(struct in_addr)); 3041 sizeof(struct in_addr));
3039 a = (struct sockaddr *) &a4; 3042 a = (struct sockaddr *) &a4;
3040 slen = sizeof (a4); 3043 slen = sizeof (a4);
@@ -3054,9 +3057,9 @@ udp_select_send (struct Plugin *plugin,
3054 } 3057 }
3055 else 3058 else
3056 { 3059 {
3057 call_continuation (udpw, 3060 call_continuation (udpw,
3058 GNUNET_OK); 3061 GNUNET_OK);
3059 dequeue (plugin, 3062 dequeue (plugin,
3060 udpw); 3063 udpw);
3061 notify_session_monitor (plugin, 3064 notify_session_monitor (plugin,
3062 udpw->session, 3065 udpw->session,
@@ -3073,17 +3076,17 @@ udp_select_send (struct Plugin *plugin,
3073 { 3076 {
3074 /* Failure */ 3077 /* Failure */
3075 analyze_send_error (plugin, 3078 analyze_send_error (plugin,
3076 a, 3079 a,
3077 slen, 3080 slen,
3078 errno); 3081 errno);
3079 call_continuation (udpw, 3082 call_continuation (udpw,
3080 GNUNET_SYSERR); 3083 GNUNET_SYSERR);
3081 GNUNET_STATISTICS_update (plugin->env->stats, 3084 GNUNET_STATISTICS_update (plugin->env->stats,
3082 "# UDP, total, bytes, sent, failure", 3085 "# UDP, total, bytes, sent, failure",
3083 sent, 3086 sent,
3084 GNUNET_NO); 3087 GNUNET_NO);
3085 GNUNET_STATISTICS_update (plugin->env->stats, 3088 GNUNET_STATISTICS_update (plugin->env->stats,
3086 "# UDP, total, messages, sent, failure", 3089 "# UDP, total, messages, sent, failure",
3087 1, 3090 1,
3088 GNUNET_NO); 3091 GNUNET_NO);
3089 } 3092 }