Commit graph

130 commits

Author SHA1 Message Date
Daniel Larimer
09975ce12b adding IP address to http request handler 2016-04-08 14:18:42 -04:00
Eric Frias
21045dde5f Add an option to the websocket server constructor to allow disabling deflate
compression.  Refactored the code to remove duplication between tls/non-tls
versions of the server, which appear to have been cut & paste copies of
one another that had diverged slightly.  This makes some of the fixes to
the non-tls server available in the tls server.
cryptonomex/graphene#619
2016-03-10 17:22:28 -05:00
Eric Frias
d5370fc2ea Update the websocketpp library and change the configuration options we pass
when creating the websocket servers to enable deflate compression on
websocket frames.  This is relevant to cryptonomex/graphene#540 because
the spammed data is higly compressible.  In my tests, it reduces bandwidth
for a single idle node by a factor of ~16, from 577kbps down to 36kbps.
This doesn't require any changes to the wallets, simply upgrading the
public servers will begin sending compressed data to all clients that
support it.
Note: this commit adds a dependency on zlib for non-apple platforms
(it was already required on apple)
2016-03-03 16:53:43 -05:00
Eric Frias
6ed7717826 Handle http requests to the websocket server async, in a similar manner to the way regular websocket messages were handled since 01445529f0. Fixes cryptonomex/graphene#251, and likely eliminates the need for the workaround used to fix cryptonomex/graphene#1 and cryptonomex/graphene#252 2016-02-10 15:25:54 -05:00
Daniel Larimer
83a9e4d7c8 Update NTP performance requirments
NTP server must ACK within 300ms or time will not be set.
Removed extra printing
2015-09-23 16:22:11 -04:00
Daniel Larimer
19e42ac4c4 fix potential crash in websocket 2015-09-07 17:46:08 -04:00
Nathan Hourt
9c868b3927 Fix crash on exit 2015-08-14 14:31:09 -04:00
Daniel Larimer
d79855b491 Websocket shouldn't cleanup default_io_service, that should only happen ONE time when main exits. 2015-07-24 08:32:38 -04:00
Nathan Hourt
17b64bb38f Resolve cryptonomex/graphene/issues/146 2015-07-22 12:11:04 -04:00
Daniel Larimer
01445529f0 handle messages async 2015-05-29 12:11:21 -04:00
Nathan Hourt
83d5bcb147 Mark websockets as logging to rpc 2015-05-27 15:04:34 -04:00
Nathan Hourt
8012ab4705 Fix crash on exit with websocket_client 2015-05-27 14:54:11 -04:00
Daniel Larimer
9ef91e2245 partial fixes to crashing on websocket client close 2015-05-12 17:15:00 -04:00
Daniel Larimer
c28ed38f1a adding support for secure websocket client 2015-05-12 16:16:10 -04:00
Daniel Larimer
fb62b6421c adding ssl support to websocket 2015-05-12 14:50:08 -04:00
Daniel Larimer
4df08d8efe fix crash in websocket 2015-05-06 16:34:55 -04:00
Daniel Larimer
72288a25b1 making sure getline doesn't blog 2015-05-04 14:07:22 -04:00
Daniel Larimer
c8200afade better close notification and error handling 2015-04-01 10:25:57 -04:00
Daniel Larimer
e506e4f4be added listen on a specific endpoint/port pair 2015-03-30 16:56:28 -04:00
Daniel Larimer
74b707999c fix bugs with websocket and integrate API support 2015-03-27 16:29:33 -04:00
Daniel Larimer
4ce26f068f implement simple websocket wrapper ontop of websocketpp 2015-03-26 16:51:10 -04:00
Nathan Hourt
de2000795d Fix crashes when destroying json_connection, tcp_socket
Also, create on_close callback on json_connection, so clients can
know when the connection has failed.
2015-02-12 10:54:18 -05:00
Vikram Rajkumar
e1678b1801 Add missing default HTTP response 2015-01-19 17:38:28 -05:00
dnotestein
13d536c119 Prevent crash at shutdown by shutting down rate_limiting asyncs before boost filesystem global constructors execute. 2014-10-31 17:54:14 -04:00
Eric Frias
307252e23a Call fc:🧵:quit() on thread destruction, and remove code that explicitly terminates threads from the destructors of the objects that own those threads.
Fix fc::thread to set the thread name in the Debugger when the name is set after thread construction.
When terminating a thread, cancel any tasks that have been schedule()d or async()ed but have not yet started executing.
When canceling a task blocked on a fc::mutex, notify the thread to reschedule the task to allow it to clean up the mutex's block list.
Fix a bug in managing the recursive lock count when tasks block on a fc::mutex
Reorder the code that manages the hard links for log files to avoid an exception generated by unlinking a locked file on Windows.
2014-10-21 10:25:28 -04:00
Eric Frias
891e880ad1 When the HTTP server asyncs a handler for a request, keep a future for that async and cancel any running asyncs when the HTTP server destructs 2014-10-17 16:18:55 -04:00
Vikram Rajkumar
7ddf882459 Fix linux build 2014-10-17 13:23:51 -04:00
Eric Frias
06ca6d8981 Fix bug that was causing NTP to fail to update after the first check 2014-10-07 11:49:35 -04:00
Eric Frias
82dd74add0 Retry NTP requests more frequently if we don't receive a (valid) reply 2014-10-07 11:10:27 -04:00
Eric Frias
0d61966a1c Improve NTP math 2014-10-07 10:31:19 -04:00
Eric Frias
256df78fc6 Allow binaries compiled on a system that doesn't support SO_REUSEPORT to use the option
on systems that do support it
2014-10-02 14:49:38 -04:00
dnotestein
c4e814d7de Added more logging to ntp and fixed code indentation. 2014-09-30 10:53:23 -04:00
dnotestein
53196706f0 Add some more logging to ntp time synchronization code. 2014-09-29 18:55:35 -04:00
Daniel Brockman
bd846576f6 Compare HTTP headers case-insensitively
See <https://groups.google.com/d/msg/nodejs/XIU55IYtfJo/feUp9Fz7p14J>
2014-09-17 22:50:47 +02:00
Eric Frias
7966587021 Wrap a few boost asio exceptions in fc exceptions 2014-09-16 09:33:51 -04:00
Daniel Brockman
7b8394a781 Use set_reuse_addr in http_server 2014-09-15 20:30:31 +02:00
Nikolai Mushegian
60781c532b Revert "Set SO_REUSEADDR to avoid having to wait for network ports to be released when restarting the client" 2014-09-15 14:06:37 -04:00
Daniel Brockman
9ba96f9dcf Set SO_REUSEADDR 2014-09-15 20:02:27 +02:00
Eric Frias
b5414af3ce Restore an accidentally-commented-out line that was preventing NTP from restarting after encountering an error. 2014-09-14 19:53:08 -04:00
Eric Frias
3ee5f756fb Fix a yield-during-catch bug in udp_socket, and add a shared_ptr version of udp_socket::send_to() which will avoid reading from uninitialized memory in the face of cancellation. 2014-09-12 19:42:25 -04:00
Eric Frias
751777e754 Fix more locations where we were making boost::asio calls with buffers declared on the stack which could cause problems when the calling tasks were canceled. 2014-09-11 16:30:03 -04:00
Eric Frias
aa6882b3b7 Allow us to safely cancel tasks that are executing asynchronous network reads
and writes.  This was previously unsafe because we almost always passed read/write
buffers to boost that were on the stack. Canceling the task deleted the stack and
therefore the buffer, but couldn't reliably prevent boost from writing to the buffer
if data came in after the cancel.  This commit adds variants of the read and write
functions that take a shared_ptr<char> instead of a raw char* as the buffer, and
these variants will ensure the shared_ptr will outlive the boost::asio read/write.
2014-09-09 11:10:37 -04:00
Eric Frias
db8eb2e5d4 Revert "Instead of canceling the read_loop, close the socket and wait for the read_loop to finish as a result. This prevents the receive_from from writing into the buffer (which is on the stack!) after the task is canceled. This caused nasty intermittent exception stack unwind errors."
This reverts commit c79cbdae8e.
2014-09-09 11:08:27 -04:00
dnotestein
c79cbdae8e Instead of canceling the read_loop, close the socket and wait for the read_loop to finish as a result. This prevents the receive_from from writing into the buffer (which is on the stack!) after the task is canceled. This caused nasty intermittent exception stack unwind errors. 2014-09-08 17:23:03 -04:00
Eric Frias
881903c1be Wrap boost::exception with fc::exception in fc::ip::endpoint::from_string()
Restructure udp_socket::receive_from() to something functionally identical, but has one less exception handler on the stack which I hope would make it easier to debug strange exception-handling errors encountered on win64
2014-09-08 16:10:42 -04:00
dnotestein
10fdbcf5b3 Dequeue a thread from a blocking promise's notify list when the all the thread's tasks that are waiting on that promise are canceled. This prevents a crash when the promise is fulfilled after the thread is destroyed.
Re-organize read-loop execution to avoid crashes in read_loop on Win32 when ntp object destructs. Call quit on ntp_thread when ntp object destructs to free up thread (eventually we need to make fc::threads call quit in their destructor, but more work is required to make that work properly).
~fc::udp_socket now closes socket on destruction (consider doing this for tcp sockets as well).
2014-09-08 15:31:13 -04:00
dnotestein
b6e38cd5ec Eliminate unnecessary cast in endpoint::from_string 2014-09-08 10:10:19 -04:00
Eric Frias
f8472af119 Change fc::canceled_exceptions thrown due to a socket operation being canceled into regular fc::exceptions -- we're reserving canceled_exception for canceling async tasks 2014-08-28 15:34:04 -04:00
Eric Frias
ac385d1f6b Allow the user to supply a reason string when canceling a task (useful for debugging) 2014-08-27 14:07:44 -04:00
Eric Frias
d188b138d6 Allow fc::canceled_exception to pass through places where we were catching and ignoring all fc::exceptions 2014-08-25 18:43:12 -04:00