== SHOWSTOPPERS == == HIGH PRIORITY == [ ] Cache getaddrinfo responses [ ] Replace Conn_X with Conn_get_socket_X! [ ] Use shutdown(2) before closing connection (http://www.developerweb.net/forum/archive/index.php/t-2940.html). == LOW PRIORITY == [ ] Dump all memory statistics [ ] SCTP [ ] .error_state -> error_type [ ] if (.error_state...) -> if (.state == CONN_STATE_ERROR) [ ] Audit CONN_STATE_EMPTY vs CONN_STATE_FREE [ ] Add a function to set the maximum number of connections. [ ] Fix the whole list scanning for expiration, band and closing. [ ] Put callbacks in a structure to free some space from struct Conn. [ ] Add access control Conn_ac_set_default(C, CONN_AC_DENY) - default deny (or CONN_AC_ALLOW) Conn_ac_add(C, CONN_AC_ALLOW, "2001::1/64"); - for ipv6 Conn_ac_add(C, CONN_AC_ALLOW, "192.168.0.0/25"); - for ipv4 [ ] A la redir stuff [ ] Bridge 2 connections together for proxy stuff. [ ] Check PACKET: can we send with "send" without knowing the MAC? [ ] UDP [ ] Ce se intimpla daca se ajunge la ~ sfirsitul buffer-ului si nu pot inca sa procesez datele? [ ] Queue for delete/trytoconnect/etc. Performance: [ ] net.core.somaxconn [ ] Take care for /proc/net/netstat [ ] /proc/sys/net/ipv4/tcp_mem Now (512M): 49152 65536 98304 Now (256M): 24576 32768 49152 - 55 conns/sec Test with: 80000 120000 240000 - 92 conns/sec Test with 160000 240000 480000 - 96 conns/sec After: echo "16000 64000 512000" > tcp_[rw]mem - 96 After echo 1 > /proc/sys/net/ipv4/tcp_low_latency - 156 conns/sec Pentru a reduce numarul de conexiuni in TIME-WAIT: echo 200 > /proc/sys/net/ipv4/tcp_max_tw_buckets [ ] Add loadbalancing and failover in the base code. [ ] Automaticaly put \0 at the end of receive data. [ ] Add the possibility to wait for an char/string before calling recv callback [ ] Change socket buffer accordingly with user settings to minimize needed memory. [ ] Dump how many memory is in use vor various parts of the internal data. [ ] Do not mix slot and id and fd in examples. [ ] Test suite [ ] Free memory when the number of connections is going down. [ ] Bandwidth part should have a separate pointer, to not load too much Conn structure. === When we switch to Conn version 2 library === [ ] Conn_socket will cann Conn_socket_proto [ ] use enums!