catalinux / Conn (public) (License: LGPLv2) (since 2016-03-01) (hash sha1)
Net library for easy building ipv4/ipv6 network daemons/clients

/TODO (c1d87e72d02403b09acd37ccc74da2ae122f7dcd) (2101 bytes) (mode 100644) (type blob)

== SHOWSTOPPER ==
[ ] Check Conn_enqueue usage in examples/. Must check for -1!

== HIGH PRIORITY ==
[ ] Cache getaddrinfo responses
[ ] Replace Conn_X with Conn_get_socket_X!

== LOW PRIORITY ==
[ ] 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.

[ ] 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:
[ ]	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


Mode Type Size Ref File
100644 blob 70 9964a59b5d89f394cc4250ed6d6ce67a5f0cd196 .gitignore
100644 blob 1945 fecf0e7a7e8580485101a179685aedc7e00affbb Changelog.pre109
100644 blob 29893 5906f3415dd54672f79d0f718e9b38ef53dbae09 Conn.c
100644 blob 1414 3e0391df9af1d65fa010a31ad42452016d37e6ba Conn.h
100644 blob 726 64b1bad93a84f87c3e93fc24ac5341db691ea578 Conn.spec.in
100644 blob 66 68138d781ca754b15e14c687da91ee261b2c41f3 Conn_config.h.in
100644 blob 27950 c05d5a72906ec0e53a79f919725e5d7cca76e172 Conn_engine_core.c
100644 blob 9009 d5ee6e55abd68283f9a0f93b94583e85c5f4593c Conn_engine_core.h
100644 blob 3687 8ae607cf9e14a6f9f1d9f17f468294660986e845 Conn_engine_epoll.c
100644 blob 601 b7631d5fc5487b502f02679b0d679661f87b4da9 Conn_engine_epoll.h
100644 blob 2677 e885b694fc0f55200ee50936966a2e40744ebf9b Conn_engine_poll.c
100644 blob 588 b518b20ac383c00b72e96a77a882c6b7ee953f6f Conn_engine_poll.h
100644 blob 30 d987fa5df957830331139935d517009e2911b0cf INSTALL
100644 blob 25275 92b8903ff3fea7f49ef5c041b67a087bca21c5ec LICENSE
100644 blob 1311 3c820df3b36b4bc844c52bc8c7e86f7843b67bb6 Makefile.in
100644 blob 192 5b11bdfb23857d8588845465aef993b320596b44 README
100644 blob 2101 c1d87e72d02403b09acd37ccc74da2ae122f7dcd TODO
100755 blob 23 d33bb6c4ecdce1390ce1db3c79ea3b93e22ea755 configure
040000 tree - d4c9c4a69c5cfa2a84316967185f1661b6817779 docs
100755 blob 10344 8acd6afdceefbb056b57e9d09a9943857800df8e duilder
100644 blob 276 4163f35b9322fbbf5e9cade154d251b39878c43f duilder.conf
040000 tree - a3188de3517c8c06b8b4d5e64806b5943b9db213 examples
040000 tree - 751693d0803f700dd060788cc9383aa24b472267 tests
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/catalinux/Conn

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/catalinux/Conn

Clone this repository using git:
git clone git://git.rocketgit.com/user/catalinux/Conn

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main