Commit graph

499 commits

Author SHA1 Message Date
Vikram Rajkumar
c38479c6ae Temporarily revert timestamp serialization change to upgrade in phases 2014-10-29 15:01:24 -04:00
Vikram Rajkumar
f948bd759d Use ISO standard delimited timestamp string serialization 2014-10-28 18:54:49 -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
Nathan Hourt
c1eca45ef1 More fixes in json_connection 2014-10-20 12:52:47 -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
Nathan Hourt
fadc0512a1 Merge branch 'master' of github.com:InvictusInnovations/fc 2014-10-17 13:43:46 -04:00
Nathan Hourt
502a3c653c Fix yield in catch block 2014-10-17 13:43:40 -04:00
Vikram Rajkumar
7ddf882459 Fix linux build 2014-10-17 13:23:51 -04:00
Eric Frias
b026e82451 Remove task priority hack that is no longer needed 2014-10-17 12:04:21 -04:00
Eric Frias
227767a425 Fix type of PRECISION 2014-10-16 19:00:30 -04:00
Eric Frias
b34a222dc5 Remove #ifdefed-out code 2014-10-16 17:50:58 -04:00
Eric Frias
e5666cca54 Convert ready_head (list of fibers able to run immediately) into a priority heap 2014-10-16 16:26:19 -04:00
Eric Frias
95eb84e62d Add missing include 2014-10-16 16:25:12 -04:00
Eric Frias
1af4ac6a5c Schedule fibers in the order they are asynced or unblocked. Earlier behavior was always to start newly-asycned tasks before resuming existing tasks, so existing tasks could be starved if there was a steady stream of new tasks created. Now all tasks are started or resumed in the order they are created or unblocked. 2014-10-16 15:25:31 -04:00
Eric Frias
a426bf9710 whitespace and spelling fixes, no functional changes 2014-10-16 15:25:31 -04:00
Daniel Larimer
dfe67a4494 adding blob type to variant 2014-10-15 23:32:37 -04:00
Daniel Larimer
ec9e85d268 fix fixed point math 2014-10-15 20:46:24 -04:00
Nathan Hourt
c3a6b40188 Test and bugfix real128 2014-10-15 17:53:50 -04:00
Daniel Larimer
b55ae3431a adding real 128 for fixed point 64.64 math 2014-10-15 17:00:49 -04:00
Nathan Hourt
1a78fd2931 Add directory_size call
Recursively iterate the specified directory, summing up the files
inside, and return the total size.
2014-10-13 15:17:14 -04:00
Eric Frias
b63e6a8b81 Allow recursive fc::mutexes 2014-10-12 17:28:41 -04:00
Eric Frias
4e83427df0 Improvements for handling unicode filenames on Windows. When converting fc::path to/from fc::variant, use utf8 encoding. Replace several places where we use a std::ifstream and open it with a char* filename with a boost::filesystem::ifstream and open it with a boost::filesystem::path, which does unicode correctly. 2014-10-09 16:21:52 -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
5a615e6b21 Execute async tasks in the order they were asynced (this only changes the behavior of tasks that hadn't started executing yet, it doesn't change anything about the order blocked tasks unblock) 2014-10-03 16:53:14 -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
Eric Frias
8def04f341 Add a path::preferred_string() function that generates a string in the platform's preferred format, using backslashes on win32 (uses boost::filesystem::path::make_preferred()).
Modify the log file configuration and rotating code to call to_native_ansi_path() and do more paths manipulation in fc::path objects and less in std::strings, in an attempt to improve BitShares/bitshares_toolkit#791
2014-09-25 08:57:31 -04:00
Eric Frias
6cddd42cfe On windows, change the method we use for getting the home directory and app data directory to get it in unicode form. Partial fix for BitShares/bitshares_toolkit#791 2014-09-20 19:15:28 -04:00
Eric Frias
2f066e4adf Fix a crash in fc::process when not capturing all three stdin/out/err
Quiet a few 64-bit warnings.
2014-09-18 11:17:41 -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
Nathan Hourt
07e3947ed4 Fix bug in json pretty printer which broke formatting and possibly
corrupted json
2014-09-17 13:27:37 -04: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
1daaab43ac Add assert to catch any time we yield during a catch{} block 2014-09-12 14:28:56 -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
Nathan
55e7a073cf Fix build error in salsa20.cpp 2014-09-09 16:09:49 -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
1360eabd8c Merge branch 'master' of https://github.com/InvictusInnovations/fc 2014-09-08 10:47:16 -04:00
Eric Frias
130da3623e Allow fibers to be canceled while they're sleeping or blocked on promises 2014-09-08 10:41:59 -04:00