Commit Graph

64 Commits

Author SHA1 Message Date
Boris Pek cf3a6e06df Secure URLs: http --> https (part 2) 2019-04-23 15:59:03 +02:00
Jan Vidar Krey 418db22931 Merge branch 'master' of github.com:janvidar/uhub 2014-10-16 23:10:28 +02:00
Jan Vidar Krey 44708e8433 Move some network, timer code. 2014-10-16 23:09:12 +02:00
Tillmann Karras 3d0b652ec9 Remove some unused variables 2014-10-06 21:02:08 +02:00
Jan Vidar Krey ac543e3df4 Clear connection timeout timer when successfully connecting. 2014-08-05 17:40:55 +02:00
Jan Vidar Krey cbe0b4e108 Potential crash fix for tools. 2014-07-29 17:35:14 +02:00
Hector Martin 0426cb523a Fix: Rework SSL poll event handling to avoid infinite loops
The downstream connection callback must only be invoked when the event
that SSL requests for the connection to make progress has actually
occured. Otherwise, the downstream callback might do nothing but
re-queue an unrelated event (e.g. in user_net_io_want_write), and the
event loop comes around instantly while making no progress. Track the
SSL-requested events separately and deliver the required downstream
event when they fire.

Sample strace:

epoll_wait(0, {{EPOLLIN, {u32=96, u64=96}}}, 91, 10000) = 1
: net_ssl_callback in state tls_st_need_write calls cb NET_EVENT_WRITE
: User writes data, OpenSSL tries to write data
write(96, <snip>..., 170) = -1 EAGAIN (Resource temporarily unavailable)
: handle_openssl_error requests NET_EVENT_WRITE
epoll_ctl(0, EPOLL_CTL_MOD, 96, {EPOLLOUT, {u32=96, u64=96}}) = 0
: User callback then requests NET_EVENT_READ|NET_EVENT_WRITE
epoll_ctl(0, EPOLL_CTL_MOD, 96, {EPOLLIN|EPOLLOUT, {u32=96, u64=96}}) =
: Data available for *reading*
epoll_wait(0, {{EPOLLIN, {u32=96, u64=96}}}, 91, 10000) = 1
: net_ssl_callback in state tls_st_need_write calls cb NET_EVENT_WRITE
: again...
2014-07-29 12:09:07 +02:00
Jan Vidar Krey 9f78a2e85f Merge branch 'master' of github.com:janvidar/uhub 2014-05-30 15:06:23 +02:00
Jan Vidar Krey f472fc9424 Fix Clang compile warnings. 2014-05-14 21:00:42 +02:00
Jan Vidar Krey 7706e1cb8a Fix copyright year. 2014-05-14 11:39:18 +02:00
Tillmann Karras 8b442018a7 Fix struct mixup 2013-09-06 21:17:43 +02:00
Jan Vidar Krey 92b65a0e14 Created a connection establishment API.
This API provides transparent asynchronous DNS lookups
with both IPv4 and IPv6 support, and in addition will try
to connect to all addresses until one of them work.

This implements the "happy eyeballs" algorithm provided that the client supports IPv6
and that the DNS records provides both IPv6 and IPv4 addresses.
2013-02-05 22:40:20 +01:00
Jan Vidar Krey 19559f4974 Make sure we count OpenSSL traffic for the byte IO statistics. 2012-10-18 11:40:18 +02:00
Jan Vidar Krey b1f2c93738 Reworked the error handling of non-blocking reads and writes.
This should prevent busy loops where the socket is makred readable
but we are really only looking for it to become writable.
2012-10-17 09:16:02 +02:00
Jan Vidar Krey f3922bb3e0 Work on splitting out OpenSSL cleanly. 2012-10-12 14:24:03 +02:00
Jan Vidar Krey f20c42d05f Wrapped everything OpenSSL related in a SSL_USE_OPENSSL check macro. 2012-10-02 23:59:11 +02:00
Jan Vidar Krey 35bfefa717 Fix debug output typo. 2012-09-27 15:29:19 +02:00
Jan Vidar Krey 5068fe8351 Cygwin/Mingw32 compile fixes. 2012-01-25 00:20:59 +01:00
Jan Vidar Krey c17b43e77f Fix bug #144 - Count SSL traffic in !stats. But this does not include the SSL overhead. 2011-11-30 14:54:54 +01:00
Jan Vidar Krey 99e644597d Cleaned up the ADC client test code.
Now works with ADCS (not very well tested, though)
2011-11-29 16:39:09 +01:00
Jan Vidar Krey bad4512a37 Fix compiler warnings using gcc 4.6. 2011-11-28 16:30:35 +01:00
Jan Vidar Krey 3ccce614d0 Fix SSL/TLS related memory leak. 2011-08-16 12:04:14 +02:00
Jan Vidar Krey e30505b54e Fix 100% CPU issue with SSL connections. 2011-08-16 12:04:03 +02:00
Jan Vidar Krey 896bbfcb5d Compile multiple network backends into the binary and choose which one to use at runtime.
This makes it possible to share more code between the backends and also work around
bugs of certain backends on some (versions of) operating systems.
2010-02-10 22:00:13 +01:00
Jan Vidar Krey c670d13369 Make sure we shutdown SSL connections when an error occurs. 2010-01-23 00:20:48 +01:00
Jan Vidar Krey 84bd2591d6 SSL fixes, seems to work with stunnel4 as a client but not linuxdcpp using SSL directly. 2010-01-22 23:43:23 +01:00
Jan Vidar Krey 230ca28b46 Some unfinished SSL work. 2010-01-22 18:52:38 +01:00
Jan Vidar Krey 2f09fcea84 Added select() backend which can be used as a fallback if epoll is not available. 2010-01-20 18:39:55 +01:00
Jan Vidar Krey f84073f7cc Various fixes for epoll handling without libevent.
This should take care of most compile issues as well as busy loops caused by unhandled recv() calls returning 0 and general cleanups.
2010-01-19 17:52:58 +01:00
Jan Vidar Krey 314707f499 Epoll fixes. 2010-01-18 16:15:38 +01:00
Jan Vidar Krey 6a4b9c58f4 Work on removing libevent completely as a mandatory dependency. 2010-01-07 20:55:13 +01:00
Jan Vidar Krey b3aa5332c8 Work on epoll backend, and removing dependency on libevent. 2009-12-10 23:12:04 +01:00
Jan Vidar Krey 4a4de0f2ac Make sure we have libevent enabled for now, and add macro protection around the areas of the code that still depend on libevent. 2009-12-09 17:27:46 +01:00
Jan Vidar Krey 8bcdbdc061 Removed assert. 2009-11-21 11:52:25 +01:00
Jan Vidar Krey 53536f191d Crash fix. 2009-11-21 11:47:26 +01:00
Jan Vidar Krey e994f23ea0 Crash fix part 2 2009-11-18 18:35:31 +01:00
Jan Vidar Krey f489e77602 Crash fix? 2009-11-18 18:27:31 +01:00
Jan Vidar Krey e6cc47070c A few minor TLS fixes 2009-10-09 21:38:14 +02:00
Jan Vidar Krey 0c5d98c671 TLS compile and crash fixes. 2009-10-09 21:11:11 +02:00
Jan Vidar Krey 0f30ebf045 Some stability fixes. Removed log messages. 2009-10-09 20:35:04 +02:00
Jan Vidar Krey 2910c571b0 Fix protocol probe. Will detect ADC and TLS handshake - any other request
will simply cause the hub to close the connection.
Fix problems with write events not being processed due to a read event taking presendence.
Fix bug #86: Windows does not have "getrlimit()".
2009-10-08 23:16:15 +02:00
Jan Vidar Krey 20ef6f8e53 Fix to net_con_close() which allows us to either delete the connection immediately if that is safe, or delete it later. 2009-10-06 14:36:05 +02:00
Jan Vidar Krey 69f6d811bf Added lots of asserts, and split out the ip address from the connection object.
Still a lot of work remains and a massive network connection cleanup is needed.
2009-09-29 00:30:52 +02:00
Jan Vidar Krey 96ce64ee07 Fix memory issues in ADC client lib. 2009-09-04 17:18:52 +02:00
Jan Vidar Krey 4ca5caa52b Various fixes, the admin tool at least compiles and runs. 2009-08-28 18:05:58 +02:00
Jan Vidar Krey 29d6d59d36 Misc connection changes. 2009-08-27 14:15:18 +02:00
Jan Vidar Krey 96c006ee13 Cleanup some code. 2009-08-23 14:36:52 +02:00
Jan Vidar Krey 5bd258ca52 Move the network related flags from network.h to connection.h since that is where they are used. 2009-08-11 21:29:51 +02:00
Jan Vidar Krey 86ba3ca86f Complete moving all connection related data out of the hub_user object. 2009-08-07 00:22:30 +02:00
Jan Vidar Krey d45383fe4d Fix some asserts. 2009-08-04 04:58:55 +02:00