From e47b3bf704170de8eed1591a545634db11c88486 Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Sun, 23 Sep 2018 07:42:39 -0400 Subject: [PATCH 1/3] oops make format ran, increase utp bucket size by 8 --- libutp/utp_internal.h | 182 +++++++++++++++++++++++------------------- 1 file changed, 102 insertions(+), 80 deletions(-) diff --git a/libutp/utp_internal.h b/libutp/utp_internal.h index 641814630..1a57b2dc8 100644 --- a/libutp/utp_internal.h +++ b/libutp/utp_internal.h @@ -36,106 +36,128 @@ #include "utp_packedsockaddr.h" /* These originally lived in utp_config.h */ -#define CCONTROL_TARGET (100 * 1000) // us +#define CCONTROL_TARGET (100 * 1000) // us -enum bandwidth_type_t { - payload_bandwidth, connect_overhead, - close_overhead, ack_overhead, - header_overhead, retransmit_overhead +enum bandwidth_type_t +{ + payload_bandwidth, + connect_overhead, + close_overhead, + ack_overhead, + header_overhead, + retransmit_overhead }; #ifdef WIN32 - #ifdef _MSC_VER - #include "libutp_inet_ntop.h" - #endif - - // newer versions of MSVC define these in errno.h - #ifndef ECONNRESET - #define ECONNRESET WSAECONNRESET - #define EMSGSIZE WSAEMSGSIZE - #define ECONNREFUSED WSAECONNREFUSED - #define ETIMEDOUT WSAETIMEDOUT - #endif +#ifdef _MSC_VER +#include "libutp_inet_ntop.h" #endif -struct PACKED_ATTRIBUTE RST_Info { - PackedSockAddr addr; - uint32 connid; - uint16 ack_nr; - uint64 timestamp; +// newer versions of MSVC define these in errno.h +#ifndef ECONNRESET +#define ECONNRESET WSAECONNRESET +#define EMSGSIZE WSAEMSGSIZE +#define ECONNREFUSED WSAECONNREFUSED +#define ETIMEDOUT WSAETIMEDOUT +#endif +#endif + +struct PACKED_ATTRIBUTE RST_Info +{ + PackedSockAddr addr; + uint32 connid; + uint16 ack_nr; + uint64 timestamp; }; // It's really important that we don't have duplicate keys in the hash table. // If we do, we'll eventually crash. if we try to remove the second instance // of the key, we'll accidentally remove the first instead. then later, // checkTimeouts will try to access the second one's already freed memory. -void UTP_FreeAll(struct UTPSocketHT *utp_sockets); +void +UTP_FreeAll(struct UTPSocketHT *utp_sockets); -struct UTPSocketKey { - PackedSockAddr addr; - uint32 recv_id; // "conn_seed", "conn_id" +struct UTPSocketKey +{ + PackedSockAddr addr; + uint32 recv_id; // "conn_seed", "conn_id" - UTPSocketKey(const PackedSockAddr& _addr, uint32 _recv_id) { - memset(this, 0, sizeof(*this)); - addr = _addr; - recv_id = _recv_id; - } + UTPSocketKey(const PackedSockAddr &_addr, uint32 _recv_id) + { + memset(this, 0, sizeof(*this)); + addr = _addr; + recv_id = _recv_id; + } - bool operator == (const UTPSocketKey &other) const { - return recv_id == other.recv_id && addr == other.addr; - } + bool + operator==(const UTPSocketKey &other) const + { + return recv_id == other.recv_id && addr == other.addr; + } - uint32 compute_hash() const { - return recv_id ^ addr.compute_hash(); - } + uint32 + compute_hash() const + { + return recv_id ^ addr.compute_hash(); + } }; -struct UTPSocketKeyData { - UTPSocketKey key; - UTPSocket *socket; - utp_link_t link; +struct UTPSocketKeyData +{ + UTPSocketKey key; + UTPSocket *socket; + utp_link_t link; +}; +/** make it more for llarp */ +//#define UTP_SOCKET_BUCKETS 79 +#define UTP_SOCKET_BUCKETS (79 * 8) +#define UTP_SOCKET_INIT 15 + +struct UTPSocketHT : utpHashTable< UTPSocketKey, UTPSocketKeyData > +{ + UTPSocketHT() + { + const int buckets = UTP_SOCKET_BUCKETS; + const int initial = UTP_SOCKET_INIT; + this->Create(buckets, initial); + } + ~UTPSocketHT() + { + UTP_FreeAll(this); + this->Free(); + } }; -#define UTP_SOCKET_BUCKETS 79 -#define UTP_SOCKET_INIT 15 +struct struct_utp_context +{ + void *userdata; + utp_callback_t *callbacks[UTP_ARRAY_SIZE]; -struct UTPSocketHT : utpHashTable { - UTPSocketHT() { - const int buckets = UTP_SOCKET_BUCKETS; - const int initial = UTP_SOCKET_INIT; - this->Create(buckets, initial); - } - ~UTPSocketHT() { - UTP_FreeAll(this); - this->Free(); - } + uint64 current_ms; + utp_context_stats context_stats; + UTPSocket *last_utp_socket; + Array< UTPSocket * > ack_sockets; + Array< RST_Info > rst_info; + UTPSocketHT *utp_sockets; + size_t target_delay; + size_t opt_sndbuf; + size_t opt_rcvbuf; + uint64 last_check; + + struct_utp_context(); + ~struct_utp_context(); + + void + log(int level, utp_socket *socket, char const *fmt, ...); + void + log_unchecked(utp_socket *socket, char const *fmt, ...); + bool + would_log(int level); + + bool log_normal : 1; // log normal events? + bool log_mtu : 1; // log MTU related events? + bool log_debug : 1; // log debugging events? (Must also compile with + // UTP_DEBUG_LOGGING defined) }; -struct struct_utp_context { - void *userdata; - utp_callback_t* callbacks[UTP_ARRAY_SIZE]; - - uint64 current_ms; - utp_context_stats context_stats; - UTPSocket *last_utp_socket; - Array ack_sockets; - Array rst_info; - UTPSocketHT *utp_sockets; - size_t target_delay; - size_t opt_sndbuf; - size_t opt_rcvbuf; - uint64 last_check; - - struct_utp_context(); - ~struct_utp_context(); - - void log(int level, utp_socket *socket, char const *fmt, ...); - void log_unchecked(utp_socket *socket, char const *fmt, ...); - bool would_log(int level); - - bool log_normal:1; // log normal events? - bool log_mtu:1; // log MTU related events? - bool log_debug:1; // log debugging events? (Must also compile with UTP_DEBUG_LOGGING defined) -}; - -#endif //__UTP_INTERNAL_H__ +#endif //__UTP_INTERNAL_H__ From 650d13c1f9adaf14601e96e802ea1b8e9f310107 Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Sun, 23 Sep 2018 07:44:55 -0400 Subject: [PATCH 2/3] fix value --- libutp/utp_internal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libutp/utp_internal.h b/libutp/utp_internal.h index 1a57b2dc8..458ad4105 100644 --- a/libutp/utp_internal.h +++ b/libutp/utp_internal.h @@ -110,7 +110,7 @@ struct UTPSocketKeyData }; /** make it more for llarp */ //#define UTP_SOCKET_BUCKETS 79 -#define UTP_SOCKET_BUCKETS (79 * 8) +#define UTP_SOCKET_BUCKETS ((10 * 8) - 1) #define UTP_SOCKET_INIT 15 struct UTPSocketHT : utpHashTable< UTPSocketKey, UTPSocketKeyData > From 468e87962672880817a4c4d1c47e32ea8d71491d Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Sun, 23 Sep 2018 07:48:25 -0400 Subject: [PATCH 3/3] fix previous commit --- libutp/utp_internal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libutp/utp_internal.h b/libutp/utp_internal.h index 458ad4105..945df5c32 100644 --- a/libutp/utp_internal.h +++ b/libutp/utp_internal.h @@ -110,7 +110,7 @@ struct UTPSocketKeyData }; /** make it more for llarp */ //#define UTP_SOCKET_BUCKETS 79 -#define UTP_SOCKET_BUCKETS ((10 * 8) - 1) +#define UTP_SOCKET_BUCKETS ((100 * 8) - 1) #define UTP_SOCKET_INIT 15 struct UTPSocketHT : utpHashTable< UTPSocketKey, UTPSocketKeyData >