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
Eric Frias
198d858d59
Wrap boost exceptions in fc exceptions for a few socket operations that can throw
2014-08-24 14:47:01 -04:00
Eric Frias
578527626c
Support GNTP password authentication
2014-08-21 19:32:56 -04:00
Eric Frias
156a7cc4b4
Allow setting hostname
2014-08-21 16:14:08 -04:00
Eric Frias
362884fc52
Import GNTP notification code
2014-08-21 15:21:48 -04:00
Eric Frias
92d29ac657
Prevent crash at shutdown rescheduling NTP task
2014-08-12 15:19:44 -04:00
dnotestein
7cc69f3bb7
Set canceled flag in task's context object so that we cancel out of active tasks when they try to resume. Wrap a try-catch block around tcp and udp resolve requests to convert any non-fc exceptions to fc exceptions. Minor change to clarify design intent that request_time_task should always be running in _ntp_thread.
2014-08-01 11:31:36 -04:00
Eric Frias
d847f6469a
Allow us to require assigning descriptions to all async tasks to aid in debugging
2014-07-27 17:37:21 -04:00
dnotestein
9e320a3db8
Add descriptions for a bunch of async tasks, remove logging during thread::quit to avoid crashes for now until we cleanup thread quit code
2014-07-27 00:09:15 -04:00
Eric Frias
b460fd6b41
Cleanup all async tasks on exit, thread safety, work in progress.
2014-07-26 18:22:38 -04:00
Eric Frias
c208a968b2
Fix ntp on win32
2014-07-25 14:40:47 -04:00
Nathan Hourt
523fa56d88
Bugfix: Incorrect ordering of newline and carriage return in HTTP server
...
The HTTP server was printing "\n\r" at the end of lines in the response
headers, which is invalid and caused some HTTP clients to detect an end
to the headers after the first header line.
The server now prints the proper "\r\n" sequence, which is parsed
correctly by clients.
2014-07-23 11:56:57 -04:00
Daniel Larimer
eed62c8338
sockets now wait for any pending write or read operations to finish before destructing
2014-07-17 17:03:25 -04:00
Daniel Larimer
13da4b0d6a
improve socket error handling
2014-06-30 10:50:50 -04:00
Daniel Larimer
c33acad0ab
fix udt sockets, actually enable non blocking operation
2014-06-29 01:38:46 -04:00
Daniel Larimer
d2072e9d3a
updates to thread / udt socket
2014-06-26 20:10:56 -04:00
Daniel Larimer
bb40828953
Merge branch 'master' of https://github.com/InvictusInnovations/fc
2014-06-26 11:25:12 -04:00
Daniel Larimer
5529b300d9
implemented working UDT socket/server
2014-06-26 11:25:07 -04:00
Eric Frias
21d1ce2067
Merge branch 'phoenix'
2014-06-26 10:03:42 -04:00
Eric Frias
78af258510
Remove include that's missing from win32
2014-06-26 10:03:02 -04:00
Daniel Larimer
5c98d7864f
Merge branch 'phoenix' of https://github.com/InvictusInnovations/fc
2014-06-26 08:48:12 -04:00
Daniel Larimer
456c81df27
fix potential errors in NTP caused by running in main thread
2014-06-25 23:32:09 -04:00
Daniel Larimer
d20b9d049b
start work on udt socket class for fc
2014-06-25 18:34:04 -04:00
Eric Frias
2c5c1655a6
Add counters to the TCP rate limiter to measure actual upload and download speed, and allow the caller to set how bursty they want the connection to be.
2014-06-25 18:16:58 -04:00
Eric Frias
331e6aac7d
Convert networking exceptions to fc::exceptions to properly catch them in NTP code (fixes at least some of the shutdown crashes)
2014-06-20 12:22:37 -04:00
Daniel Larimer
bb3c3ec118
fix NTP flooding issue
2014-06-16 14:04:36 -04:00
Eric Frias
6898484321
Remove a few annoying unreferenced variables
2014-06-16 12:03:20 -04:00
Daniel Larimer
b7ad720647
updating ntp service
2014-06-16 11:17:29 -04:00
Eric Frias
a1604e3708
Fix NTP on Win32
2014-06-12 08:40:24 -04:00
Eric Frias
8ef1c4e0a7
Add include for ntohl() on linux
2014-06-11 13:56:03 -07:00
Eric Frias
59d3e80fb7
Add include to fix win32 build
2014-06-11 16:32:47 -04:00
Daniel Larimer
75ec020227
fix ntp
2014-06-11 15:30:30 -04:00
Daniel Larimer
0c64d208d9
adding ntp support to fc
2014-06-11 15:17:28 -04:00
Daniel Larimer
fe997232f6
fix url parsing bug
2014-06-07 18:53:39 -04:00
Eric Frias
8347a7b7fa
Merge branch 'phoenix' of https://github.com/InvictusInnovations/fc into phoenix
2014-06-03 19:13:52 -07:00
Eric Frias
d77bdcd3e6
Make HTTP headers case insensitive
2014-06-03 19:12:53 -07:00
Eric Frias
2690a52fe5
Add a function to return the local endpoint of a http server
2014-06-03 19:00:22 -04:00
Eric Frias
9fa6e8a430
Separate the 'bind' operation for tcp_sockets from the 'connect_to' operation so we can tell which operation is throwing an exception in client code. convert a few boost exceptions into fc::exceptions.
2014-06-01 18:08:10 -04:00
Daniel Larimer
9f6b52eac2
fix build on OS X
2014-05-23 21:54:59 -04:00
Eric Frias
b9050b589d
Merge branch 'phoenix' into tcp_rate_limiting
2014-05-23 18:04:05 -04:00
Daniel Larimer
17aefe29de
using explicit bool operator for optional
2014-05-20 11:25:31 -04:00
Eric Frias
873a0ea70d
Merge branch 'phoenix' into tcp_rate_limiting
2014-05-14 16:26:34 -04:00
Eric Frias
50ac462471
Enable SO_REUSEPORT on Linux as well as OS X
2014-05-14 16:02:41 -04:00
Eric Frias
eb501387e8
Set the SO_REUSEPORT flag on OS X whenever we set the SO_REUSEADDR
2014-05-13 21:14:40 -07:00
Eric Frias
62b479568e
Get rate limiting mostly working
2014-05-08 15:13:49 -04:00
Eric Frias
bc4361bf64
Merge branch 'phoenix' into tcp_rate_limiting
...
Conflicts:
include/fc/network/tcp_socket.hpp
src/network/tcp_socket.cpp
2014-05-08 09:04:45 -04:00
valzav
687eaa98f2
Merge remote-tracking branch 'upstream/phoenix' into http-server-improvements
2014-05-07 20:48:23 -07:00
Eric Frias
b8a7531eab
Fix error message printed when unable to deserialize a json object, improve
...
logging of return values and add logging of exceptional returns from
json function calls. Continue my endless quest to break the mac build.
2014-05-06 17:20:04 -04:00
valzav
e02a509b30
Merge remote-tracking branch 'upstream/phoenix' into http-server-improvements
2014-05-05 15:38:41 -07:00
Daniel Larimer
3ac07ddbf5
updates
2014-05-04 14:26:36 -04:00
valzav
de8ec4a1ae
Merge remote-tracking branch 'upstream/phoenix' into http-server-improvements
2014-05-03 17:49:36 -07:00
valzav
bc1792dc98
commented out http header printed to stdout
2014-05-02 14:46:15 -07:00
Daniel Larimer
6532839938
fix apple build
2014-05-02 14:09:29 -04:00
Eric Frias
aa111510f3
Expose enough functions in tcp_socket and tcp_server to allow listening and originating connections on the same port. So far, this seems to work on win32, other platforms untested.
...
Add a local_endpoint() function so we can find out which local interface a socket is bound to
2014-05-01 14:02:49 -04:00
Eric Frias
00edd3958c
Remove accidentally-committed garbage
2014-04-30 10:56:51 -04:00
Eric Frias
19f2869490
Disable keepalives on old clang compiler used for nightly
...
until we can upgrade it
2014-04-30 10:52:16 -04:00
Eric Frias
06df18c690
More work towards rate-limited TCP sockets
2014-04-17 19:39:15 -04:00
Eric Frias
f0633f8022
Merge branch 'phoenix' into tcp_rate_limiting
2014-04-17 16:18:22 -04:00
Eric Frias
ce7139c073
Start of work towards throttling TCP connections
2014-04-17 12:00:52 -04:00
Eric Frias
7849cc7ada
Get keepalive code building on os x
2014-04-15 13:40:19 -04:00
Daniel Larimer
ac0f01843f
fix build on osx by disabling some keepalive params
2014-04-11 17:06:57 -04:00
Eric Frias
85a9da6f27
Add to tcp_socket to enable TCP keepalives
2014-04-09 18:38:52 -04:00
Eric Frias
2e5fdf952c
Add a new version of tcp_socket::connect_to() that allows you to set the source port
...
(working, but not yet useful because we'll need to set SO_REUSEADDR)
2014-04-02 08:54:13 -04:00
Daniel Larimer
5f9dfa9a42
update http code
2014-03-27 19:53:40 -04:00
Daniel Larimer
3c59eebe92
Update HTTP server api to specify network interface
2014-03-27 01:55:52 -04:00
Daniel Larimer
a80164645f
Update tcp_socket listen on single endpoint
2014-02-14 20:32:23 -05:00
Daniel Larimer
09c84c1731
fixes to build under clang++
2014-02-06 03:22:09 -05:00
Daniel Larimer
c6897c4dbf
added method to get port
2013-12-22 00:10:03 -05:00
Daniel Larimer
a68d22a699
various updates
2013-12-09 00:48:28 -05:00
Daniel Larimer
dcce9b2726
v6 ignored
2013-11-08 19:34:54 -05:00
Daniel Larimer
ef2b0453cd
clean up tcp_server accept api, removing unused return value
2013-08-08 15:12:01 -04:00
Daniel Larimer
4736e8e666
adding methods to detect multicast and public ip ranges
2013-07-23 01:07:19 -04:00
Daniel Larimer
f5f3bb5102
error cleanup, log cleanup, bug fixes
2013-07-18 22:19:19 -04:00
Daniel Larimer
87542eba25
adding city hash
2013-07-17 11:50:45 -04:00
Daniel Larimer
a0f41aa397
various updates and enhancements to crypto and network code
2013-07-17 02:01:35 -04:00
Daniel Larimer
57e5796839
clean up exception handling on asio / sockets
2013-07-14 17:58:27 -04:00
Daniel Larimer
fa98cb6816
adding std::hash to fc::ip::endpoint
2013-07-12 01:21:53 -04:00
Daniel Larimer
4bfaa4b962
removing debug print statement from tcp_socket
2013-07-12 01:19:39 -04:00
Daniel Larimer
d5771acd3d
added remote_endpoint() call to tcp_socket
2013-07-10 00:31:44 -04:00