Commit graph

532 commits

Author SHA1 Message Date
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
Eric Frias
454573e048 Add support for boost 1.56. 2014-09-08 10:41:59 -04:00
Nathan Hourt
9b6facea3f Make the JSON parser less fragile 2014-09-08 10:12:42 -04:00
dnotestein
b6e38cd5ec Eliminate unnecessary cast in endpoint::from_string 2014-09-08 10:10:19 -04:00
Eric Frias
3222dc7c0b When reusing a context, re-initialize most of its fields. This fixes at least two errors:
- we were canceling tasks that hadn't been canceled, because the canceled flag was left set to true and the next task assigned to the context then became canceled as soon as it yielded
 - we were resumeing blocked tasks before they should have resumed, because their blocking_promises list wasn't cleared and they were unblocking because the erroneous promises were fulfilled
As a debugging aid, we also record the cancellation reason whenever a task is canceled, and include that in the canceled_exception (this is only enabled in debug builds)
2014-08-28 15:43:26 -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
8841f5e271 Import thread/task_specific variables 2014-08-27 12:20:19 -04:00
Eric Frias
d9e6a9e568 When a task is canceled while blocking on a mutex, fix the code that removes it from the mutex's block list to null out its "next" pointer, which is assumed to be null whenever not blocked on a mutex 2014-08-27 11:55:14 -04:00
Eric Frias
976bbce668 When locking a mutex, ensure the task has a context before attempting to lock. 2014-08-25 18:44:15 -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
27096f15a7 Log the names of tasks to the log file (now contains thread_name:task_name} 2014-08-24 18:33:05 -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
Nathan Hourt
9e75d47ba3 Fix to an issue causing a thread to exit if any fiber therein self-cancels 2014-08-21 14:36:29 -04:00
Daniel Larimer
8468f392ce default to_string conversion is now fixed 2014-08-13 16:06:42 -04:00
Eric Frias
92d29ac657 Prevent crash at shutdown rescheduling NTP task 2014-08-12 15:19:44 -04:00
Eric Frias
978de7885a Add a macro to check if a task that shouldn't yield actually yields. 2014-08-02 19:43:28 -04:00
Daniel Larimer
6e31ffd963 Merge branch 'master' of https://github.com/InvictusInnovations/fc 2014-08-01 17:21:24 -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
PaulEU
eae493a8c1 Remove unnecessary code from init_openssl after update new OpenSSL package. 2014-07-29 23:44:47 +02:00
Daniel Larimer
3ccbe26dd5 adding aes exception 2014-07-29 13:54:50 -04:00
Vikram Rajkumar
a23f3a86be Add missing integer variant conversions 2014-07-28 22:36:47 -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
Vikram Rajkumar
3be05ef822 Merge branch 'master' of github.com:InvictusInnovations/fc 2014-07-26 22:29:22 -04:00
Vikram Rajkumar
48837f3116 Add time_point_sec::to_iso_{extended_}string() 2014-07-26 21:05:11 -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
600ae24657 separate one try/catch into two blocks during file_appender destructor 2014-07-26 15:05:26 -04:00
Eric Frias
c208a968b2 Fix ntp on win32 2014-07-25 14:40:47 -04:00
dnotestein
34296fbb4a Eliminate local variable that was shadowing data member variable stack_ctx in context object, which resulted in an assert when the context object was destructed. 2014-07-24 15:18:53 -04:00
Nathan Hourt
a254e5ff28 Merge branch 'master' of github.com:InvictusInnovations/fc 2014-07-23 11:59:48 -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
PaulEU
4890351b34 Added OpenSSL configuration file path. (qt_wallet issue #10 Some clients on Windows 7 quit/crash on start) 2014-07-23 00:18:09 +02:00
Daniel Larimer
6ef73a4198 reduce default stack size by 50% to 4x default from 8x 2014-07-17 23:03:23 -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
01202aa709 adding space to exception message 2014-07-16 14:20:36 -04:00
Eric Frias
b6f8570c35 Lock mutex during more of the log rotation process (attempting to prevent crashes that have been seen while logging at the same time as log rotation) 2014-07-16 13:39:14 -04:00
grzegorzs
06fe9e0303 [GS] Fix types u_int32_t to uint32_t etc. - continued 2014-07-15 14:20:42 +02:00
Vikram Rajkumar
e442b29f6e Fix scrypt 2014-07-14 13:40:33 -04:00
Eric Frias
a034239313 Add missing include 2014-07-07 12:36:34 -04:00
Eric Frias
62ea4ae9c3 Add mutexes to make OpenSSL thread safe 2014-07-07 12:22:01 -04:00
Vikram Rajkumar
18611eccb9 Fix log rotation scheduling bug 2014-07-05 16:22:25 -04:00
Daniel Larimer
ace06d775c support for 8 param rpc calls 2014-07-04 17:23:47 -04:00
Vikram Rajkumar
c9c56ffbb6 Merge branch 'master' of https://github.com/InvictusInnovations/fc 2014-07-03 17:24:14 -04:00
Vikram Rajkumar
e9b1b8ec2e Use a separate thread for log compression 2014-07-03 17:24:06 -04:00
Eric Frias
c020913cb8 Make process::exec take an 'int' for the bitmask of launch options instead of an enum to make it more clear that it's a bitmask (and avoid a cast) 2014-07-03 09:30:50 -04:00
Vikram Rajkumar
adf8c10ee5 Fix Linux compilation 2014-07-03 02:55:30 -04:00
Vikram Rajkumar
223f0005f5 Hardlink from most recent log to original filename during rotation 2014-07-03 02:55:30 -04:00
Vikram Rajkumar
b522f12a0e Use ISO format timestamps for rotated log files 2014-07-03 02:17:03 -04:00
Vikram Rajkumar
b1e677bcee Implement optional LZMA compression for rotated logs 2014-07-03 01:27:58 -04:00
Vikram Rajkumar
cc1ef61cd6 Logs are now rotated on startup if rotation is enabled 2014-07-03 01:16:46 -04:00
Vikram Rajkumar
39c7f05ea9 Implement LZMA file decompression 2014-07-03 00:01:02 -04:00
Vikram Rajkumar
f56dd6d208 Implement LZMA file compression 2014-07-02 23:28:43 -04:00
Vikram Rajkumar
c0187865ea Implement log file rotation 2014-07-02 17:36:21 -04:00
Daniel Larimer
aab316d190 update time pretty print, adding space after year 2014-07-01 15:20:58 -04:00
Daniel Larimer
13da4b0d6a improve socket error handling 2014-06-30 10:50:50 -04:00
Eric Frias
160da5dbb9 Fix invalid iterator comparison in process_canceled_tasks when canceling the only task in task_sch_queue 2014-06-29 18:50:05 -04:00
Daniel Larimer
c33acad0ab fix udt sockets, actually enable non blocking operation 2014-06-29 01:38:46 -04:00
Daniel Larimer
892df5c0b7 canceled scheduled tasks return immediately when waited upon 2014-06-28 21:46:10 -04:00
Daniel Larimer
ffa617183e if a task is canceled before it is run, then it will throw a canceled exception 2014-06-28 21:08:15 -04:00
Daniel Larimer
d2072e9d3a updates to thread / udt socket 2014-06-26 20:10:56 -04:00
Daniel Larimer
8670a4722f Merge branch 'master' of https://github.com/InvictusInnovations/fc 2014-06-26 20:10:37 -04:00
Eric Frias
560b107e58 Fix signed/unsigned warnings 2014-06-26 15:51:01 -04:00
Eric Frias
862e7bb5d3 fix a few 64-bit to 32-bit conversion warnings 2014-06-26 15:50:40 -04:00
Daniel Larimer
bb40828953 Merge branch 'master' of https://github.com/InvictusInnovations/fc 2014-06-26 11:25:12 -04:00