aboutsummaryrefslogtreecommitdiff
path: root/contrib/epee/include/net (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2024-03-10Revert "http_client: reduce number of packets sent for small bodies"jeffro2561-26/+16
This reverts commit 0ae5c91e504b8007dedc2b89c9b2b49c404ffec6.
2024-01-17epee/test: remove levin_protocol_handler and core_proxy testsjeffro2561-193/+0
2023-12-19Cleanup scoped_ptr in src/common/dns_utils.cpp and header include:0xFFFC00001-0/+1
* No need for entire new class (Fix #8732). * Fix stdint.h header include in contrib/epee/include/net/http_base.h.
2023-07-02core_rpc_server: new file: rpc_ssl.fingerprintJeffrey Ryan1-0/+27
2023-03-20epee: protect base64_chars, removed dead functions, speed up compileJeffro2561-1/+0
2023-03-19http_client: reduce number of packets sent for small bodiesjeffro2561-16/+26
2023-03-19epee: remove dead code in net_helperJeffro2561-166/+0
2023-02-07Revert "epee: when loading a JSON RPC payload, ensure params is an object"moneromooo-monero1-10/+0
This reverts commit b67e931843cd0c8191ec49f80448c010cba39901. This turns out to be a bad idea, because we do have weird RPC which do actually go counter to this
2023-02-04properly terminate interrupted TCP connection. fixes #8685j-berman1-4/+1
2023-01-16Copyright: Update to 2023mj-xmr6-6/+6
Co-authored-by: plowsof <plowsof@protonmail.com> extra files
2023-01-01epee: when loading a JSON RPC payload, ensure params is an objectmoneromooo-monero1-0/+10
this makes it easier to spot those mistakes by the caller
2022-11-13epee: remove dead HTTP codeJeffrey Ryan3-65/+0
http_client.h
2022-09-26Remove invoke function in levin handlerLee Clagett1-86/+2
2022-07-13Template hash func to fix compiler error on < gcc-6j-berman1-0/+10
2022-07-08address PR commentsj-berman2-378/+376
2022-07-05connection: fix implementationanon3-811/+1133
2022-06-17Remove async_blocked_mode_clientJeffrey Ryan1-113/+0
2022-05-23http_server_handlers_map2: dead macrosJeffrey Ryan1-26/+0
2022-05-23epee: update 'http_server_handlers_map2.h' macros to use fully qualified namesJeffrey Ryan1-4/+4
quick patch which fixes the issue where if you use some macros from `http_server_handlers_map2.h` you have to be in the `epee` namespace or it doesn't compile. Now can remove `using namespace epee;` from header file `core_rpc_server.h`, which caused a couple of name qualifying mistakes
2022-04-28Doxygen: Hide anonymous namespaces from documentation by defaultJeffrey1-1/+1
Bonus: little doc fix for net_ssl.h
2022-04-22EPEE: Remove gzip_encoding.hJeffrey1-10/+1
2022-04-21add a sanity check to RPC input data sizemoneromooo-monero2-0/+12
reported by m31007
2022-04-18Remove the only 4 non-UTF8 characters in codebaseJeffrey1-4/+4
Relevant commit in old PR: 1b798a7042070cc8063bd341ebf7025da554b632
2022-04-18Refactor out to_nonconst_iterator.hJeffrey3-3/+1
Relevant commit on old PR: 2499269696192ce30dd125ddee90a80d4326dff9
2022-04-18Refactor out pragma_comp_defsJeffrey2-11/+0
Relevant commits on the old cleanup PR: 36933c7f5c7778e2d7fbfea5361c11fb41070467 21e43de0f300ee47b7e597098908601bf591950b 3c678bb1cedfd7b865ac2e7aaf014de4bfb3eb3d
2022-04-18Merge functionality of misc_os_dependent into time_helper.hJeffrey1-1/+1
Actions: 1. Remove unused functions from misc_os_dependent.h 2. Move three remaining functions, get_gmt_time, get_ns_count, and get_tick_count into time_helper.h 3. Remove unused functions from time_helper.h 4. Refactor get_ns_count and get_internet_time_str and get_time_interval_string 5. Remove/add includes as needed Relevant commits on the old PR: a9fbe52b02ffab451e90c977459fea4642731cd1 9a59b131c4ed1be8afe238fff3780fe203c65a46 7fa9e2817df9b9ef3f0290f7f86357939829e588
2022-04-18Trimming FatJeffrey1-1/+0
Remove unused include statements or unused definitions.
2022-04-18Boring Old DeletesJeffrey26-5459/+0
Here lies dozens of unused files. This commit is ONLY file deletions except for the removing of a couple of #includes and removing filenames from CmakeLists where appropriate.
2022-03-30Eliminate dependence on boost::interprocess #8223Jeffrey6-32/+27
In this repo, `boost::interprocess` was being used soley to make `uint32_t` operations atomic. So I replaced each instance of `boost::interprocess::ipcdetail::atomic(...)32` with `std::atomic` methods. I replaced member declarations as applicable. For example, when I needed to change a `volatile uint32_t` into a `std::atomic<uint32_t>`. Sometimes, a member was being used a boolean flag, so I replaced it with `std::atomic<bool>`. You may notice that I didn't touch `levin_client_async.h`. That is because this file is entirely unused and will be deleted in PR monero-project#8211. Additional changes from review: * Make some local variables const * Change postfix operators to prefix operators where value was not need
2022-03-04Copyright: Update to 2022mj-xmr7-7/+9
2022-02-19Undefined behaviour fixesSChernykh5-12/+12
Fixes issues reported in #8120
2021-08-20support cors wildcardwoodser1-1/+1
2021-08-05p2p: remove blocked addresses/hosts from peerlistmoneromooo-monero1-0/+3
2021-04-16Split epee/string_tools.h and encapsulate boost::lexical_castmj-xmr4-206/+12
2021-04-16Revert "Merge pull request #7136"luigi11112-77/+64
This reverts commit 63c7ca07fba2f063c760f786a986fb3e02fb040e, reversing changes made to 2218e23e84a89e9a1e4c0be5d50f891ab836754f.
2021-03-12async_protocol_handler_config: fix deadlockanon1-28/+24
2021-02-23epee: return HTTP error 400 (Bad request) on deserialization errormoneromooo-monero1-2/+14
It's better than 404 (Not found)
2021-02-19async_protocol_handler_config: remove connection correctlyanon1-1/+1
2021-02-13Store RPC SSL key/cert for consistent authentication between runsLee Clagett2-0/+10
2021-02-06Reduce compilation time of epee/portable_storage.hmj-xmr1-0/+1
2021-01-19boosted_tcp_server: fix connection lifetimeanon2-7/+19
2021-01-19Remove unnecessary atomic operations in levin codeLee Clagett1-32/+2
2021-01-19Remove payload copy in all outgoing p2p messagesLee Clagett2-64/+77
2021-01-16Remove payload copy in all outgoing p2p messagesLee Clagett2-64/+77
2021-01-03epee: don't log raw packet datamoneromooo-monero1-4/+4
2021-01-03add a max levin packet size by command typemoneromooo-monero1-4/+13
2020-12-28ssl: buffered handshake detectionanon4-12/+12
2020-12-26epee: fix some issues using connections after shutdownmoneromooo-monero1-6/+21
2020-12-17Add aggressive restrictions to pre-handshake p2p buffer limitLee Clagett2-10/+25
2020-11-09epee: tighten the URL parsing regexp a littlemoneromooo-monero1-4/+4
fixes massive amounts of time spent on pathological inputs Found by OSS-Fuzz
2020-10-10Change epee binary output from std::stringstream to byte_streamLee Clagett6-10/+12
2020-07-30epee: guard against exceptions in RPC handlersmoneromooo-monero1-9/+31
2020-07-22epee: Remove unused functions in local_ip.hJean Pierre Dudey1-26/+0
Signed-off-by: Jean Pierre Dudey <me@jeandudey.tech>
2020-07-20wallet2_api: implement runtime proxy configurationxiphon2-8/+1
2020-05-31Fix boost <1.60 compilation and fix boost 1.73+ warningsLee Clagett2-11/+10
2020-05-11remove double includessumogr2-7/+0
2020-05-06Update copyright year to 2020SomaticFanatic5-5/+5
Update copyright year to 2020
2020-04-27trezor: adapt to new passphrase mechanismDusan Klinec2-0/+11
- choice where to enter passphrase is now made on the host - use wipeable string in the comm stack - wipe passphrase memory - protocol optimizations, prepare for new firmware version - minor fixes and improvements - tests fixes, HF12 support
2020-04-15Allow wallet2.h to run in WebAssemblywoodser2-152/+111
- Add abstract_http_client.h which http_client.h extends. - Replace simple_http_client with abstract_http_client in wallet2, message_store, message_transporter, and node_rpc_proxy. - Import and export wallet data in wallet2. - Use #if defined __EMSCRIPTEN__ directives to skip incompatible code.
2020-03-31p2p: fix frequent weak_ptr exception on connectionmoneromooo-monero1-1/+6
When a handshake fails, it can fail due to timeout or destroyed connection, in which case the connection will be, or already is, closed, and we don't want to do it twice. Additionally, when closing a connection directly from the top level code, ensure the connection is gone from the m_connects list so it won't be used again. AFAICT this is now clean in netstat, /proc/PID/fd and print_cn. This fixes a noisy (but harmless) exception.
2020-02-17remove empty statementsInterchained2-2/+2
Cleaning up a little around the code base.
2020-01-26epee: remove backward compatible endian specific address serializationmoneromooo-monero1-6/+2
2019-12-16abstract_tcp_server2: guard against negative timeoutsmoneromooo-monero1-5/+16
2019-11-25epee: reorder a couple init list fields to match declarationmoneromooo-monero1-1/+1
This is a bug waiting to happen
2019-11-15epee: set application/json MIME type on json errorsmoneromooo-monero1-0/+2
2019-11-11epee: close connection when the peer has done somoneromooo-monero1-1/+7
This fixes rapid reconnections failing as the peer hasn't yet worked out the other side is gone, and will reject "duplicate" connections until a timeout.
2019-10-22epee: use SO_REUSEADDR on non-Windows targetsxiphon1-2/+6
2019-10-18epee: fix SSL server handshake, run_one() can block, use poll_one()xiphon1-0/+1
2019-10-15levin: armour against some "should not happen" casemoneromooo-monero1-0/+5
If adding a response handler after the protocol is released, they could never be cancelled again, and would end up keeping a ref that never goes away
2019-10-14abstract_tcp_server2: move "Trying to connect" from error to debugmoneromooo-monero1-1/+1
and fix the message grammar
2019-10-02epee: tcp server - set SO_LINGER instead of SO_REUSEADDR optionxiphon1-4/+2
2019-09-27abstract_tcp_server2: log pointer, not contents, where appropriatemoneromooo-monero1-1/+1
2019-09-17epee: implement handshake timeout for SSL connectionsxiphon2-2/+6
2019-09-16epee: fix network timeouts in blocked_mode_clientxiphon1-1/+2
2019-09-12abstract_tcp_server2: fix lingering connectionsmoneromooo-monero1-0/+5
Resetting the timer after shutdown was initiated would keep a reference to the object inside ASIO, which would keep the connection alive until the timer timed out
2019-09-08depends: fix MacOS build with Clang 3.7.1Lee Clagett1-1/+1
2019-09-08epee: abstract_tcp_server2: resolve CID 203919 (DC.WEAK_CRYPTO)anonimal1-1/+13
The problem actually exists in two parts: 1. When sending chunks over a connection, if the queue size is greater than N, the seed is predictable across every monero node. >"If rand() is used before any calls to srand(), rand() behaves as if it was seeded with srand(1). Each time rand() is seeded with the same seed, it must produce the same sequence of values." 2. The CID speaks for itself: "'rand' should not be used for security-related applications, because linear congruential algorithms are too easy to break." *But* this is an area of contention. One could argue that a CSPRNG is warranted in order to fully mitigate any potential timing attacks based on crafting chunk responses. Others could argue that the existing LCG, or even an MTG, would suffice (if properly seeded). As a compromise, I've used an MTG with a full bit space. This should give a healthy balance of security and speed without relying on the existing crypto library (which I'm told might break on some systems since epee is not (shouldn't be) dependent upon the existing crypto library).
2019-09-04Fix IP address serialization on big endianmoneromooo-monero1-1/+15
IP addresses are stored in network byte order even on little endian hosts
2019-09-04epee: fix local/loopback checks on big endianmoneromooo-monero1-0/+7
IPv4 addresses are kept in network byte order in memory
2019-08-20fix feature not introduced until boost 1.66Jethro Grassie1-1/+1
2019-08-19epee: fix connections not being properly closed in some instancesmoneromooo-monero1-1/+1
Fixed by Fixed by crCr62U0
2019-07-31Add IPv6 supportThomas Winget6-64/+416
new cli options (RPC ones also apply to wallet): --p2p-bind-ipv6-address (default = "::") --p2p-bind-port-ipv6 (default same as ipv4 port for given nettype) --rpc-bind-ipv6-address (default = "::1") --p2p-use-ipv6 (default false) --rpc-use-ipv6 (default false) --p2p-require-ipv4 (default true, if ipv4 bind fails and this is true, will not continue even if ipv6 bind successful) --rpc-require-ipv4 (default true, description as above) ipv6 addresses are to be specified as "[xx:xx:xx::xx:xx]:port" except in the cases of the cli args for bind address. For those the square braces can be omitted.
2019-07-17Added support for "noise" over I1P/Tor to mask Tx transmission.Lee Clagett7-61/+158
2019-07-16Add ref-counted buffer byte_slice. Currently used for sending TCP data.Lee Clagett7-147/+89
2019-07-16allow blocking whole subnetsmoneromooo-monero2-2/+49
2019-06-19p2p: close the right number of connections on setting max in/out peersmoneromooo-monero1-0/+24
2019-06-16Bans for RPC connectionsHoward Chu2-2/+6
Make bans control RPC sessions too. And auto-ban some bad requests. Drops HTTP connections whenever response code is 500.
2019-06-14abstract_tcp_server2: improve DoS resistancemoneromooo-monero1-4/+5
2019-06-10epee: fix SSL autodetect on reconnectionxiphon1-6/+4
2019-06-09Fix GCC 9.1 build warningsmoneromooo-monero1-0/+5
GCC wants operator= aand copy ctor to be both defined, or neither
2019-05-22Add ssl_options support to monerod's rpc mode.Lee Clagett1-0/+38
2019-05-10abstract_tcp_server2: move some things out of a lockmoneromooo-monero1-4/+8
The lock is meant for the network throttle object only, and this should help coverity get unconfused
2019-05-10remove obsolete save_graph skeleton codemoneromooo-monero1-2/+0
2019-05-10net_utils: fix m_ssl type from time_t to boolmoneromooo-monero1-1/+1
2019-05-07net_ssl: SSL config tweaks for compatibility and securitymoneromooo-monero1-0/+3
add two RSA based ciphers for Windows/depends compatibility also enforce server cipher ordering also set ECDH to auto because vtnerd says it is good :) When built with the depends system, openssl does not include any cipher on the current whitelist, so add this one, which fixes the problem, and does seem sensible.
2019-04-26change SSL certificate fingerprint whitelisting from SHA1 to SHA-256moneromooo-monero1-0/+2
SHA1 is too close to bruteforceable
2019-04-23net_helper: clear recv buffer on eofmoneromooo-monero1-0/+1
2019-04-22levin_protocol_handler_async: tune down preallocation a fair bitmoneromooo-monero1-1/+1
It can allocate a lot when getting a lot of connections (in particular, the stress test on windows apparently pushes that memory to actual use, rather than just allocated)
2019-04-15wallet: new --offline optionmoneromooo-monero1-0/+12
It will avoid connecting to a daemon (so useful for cold signing using a RPC wallet), and not perform DNS queries.
2019-04-13net_helper: avoid unnecessary memcpymoneromooo-monero1-3/+4
2019-04-12abstract_tcp_server2: fix timeout on exitmoneromooo-monero2-2/+9
When closing connections due to exiting, the IO service is already gone, so the data exchange needed for a gracious SSL shutdown cannot happen. We just close the socket in that case.
2019-04-11epee: init a new ssl related variable in ctormoneromooo-monero1-0/+1
2019-04-11simplewallet: new net_stats commandmoneromooo-monero2-2/+30
displays total sent and received bytes
2019-04-07Enabling daemon-rpc SSL now requires non-system CA verificationLee Clagett1-0/+3
If `--daemon-ssl enabled` is set in the wallet, then a user certificate, fingerprint, or onion/i2p address must be provided.
2019-04-07Require manual override for user chain certificates.Lee Clagett1-1/+2
An override for the wallet to daemon connection is provided, but not for other SSL contexts. The intent is to prevent users from supplying a system CA as the "user" whitelisted certificate, which is less secure since the key is controlled by a third party.
2019-04-07Perform RFC 2818 hostname verification in client SSL handshakesLee Clagett2-2/+14
If the verification mode is `system_ca`, clients will now do hostname verification. Thus, only certificates from expected hostnames are allowed when SSL is enabled. This can be overridden by forcible setting the SSL mode to autodetect. Clients will also send the hostname even when `system_ca` is not being performed. This leaks possible metadata, but allows servers providing multiple hostnames to respond with the correct certificate. One example is cloudflare, which getmonero.org is currently using.
2019-04-07Require server verification when SSL is enabled.Lee Clagett1-0/+6
If SSL is "enabled" via command line without specifying a fingerprint or certificate, the system CA list is checked for server verification and _now_ fails the handshake if that check fails. This change was made to remain consistent with standard SSL/TLS client behavior. This can still be overridden by using the allow any certificate flag. If the SSL behavior is autodetect, the system CA list is still checked but a warning is logged if this fails. The stream is not rejected because a re-connect will be attempted - its better to have an unverified encrypted stream than an unverified + unencrypted stream.
2019-04-07Pass SSL arguments via one class and use shared_ptr instead of referenceLee Clagett7-111/+152
2019-04-06Change SSL certificate file list to OpenSSL builtin load_verify_locationLee Clagett6-23/+20
Specifying SSL certificates for peer verification does an exact match, making it a not-so-obvious alias for the fingerprints option. This changes the checks to OpenSSL which loads concatenated certificate(s) from a single file and does a certificate-authority (chain of trust) check instead. There is no drop in security - a compromised exact match fingerprint has the same worse case failure. There is increased security in allowing separate long-term CA key and short-term SSL server keys. This also removes loading of the system-default CA files if a custom CA file or certificate fingerprint is specified.
2019-03-25epee: some more minor JSON parsing speedupmoneromooo-monero1-3/+3
2019-03-25Added socks proxy (tor/i2pd/kovri) support to walletLee Clagett4-75/+79
2019-03-24New interactive daemon command 'print_net_stats': Global traffic statsrbrunner72-1/+5
2019-03-21epee: fix build with boost 1.70.0moneromooo-monero1-5/+11
get_io_service was deprecated, and got removed
2019-03-19abstract_tcp_server2: fix crashy race on socket shutdownmoneromooo-monero1-5/+6
2019-03-08Fix startup errors with SSL cert generationHoward Chu1-1/+0
Use SSL API directly, skip boost layer
2019-03-05Update 2019 copyrightbinaryFate4-4/+4
2019-03-05epee: add SSL supportMartijn Otto6-19/+24
RPC connections now have optional tranparent SSL. An optional private key and certificate file can be passed, using the --{rpc,daemon}-ssl-private-key and --{rpc,daemon}-ssl-certificate options. Those have as argument a path to a PEM format private private key and certificate, respectively. If not given, a temporary self signed certificate will be used. SSL can be enabled or disabled using --{rpc}-ssl, which accepts autodetect (default), disabled or enabled. Access can be restricted to particular certificates using the --rpc-ssl-allowed-certificates, which takes a list of paths to PEM encoded certificates. This can allow a wallet to connect to only the daemon they think they're connected to, by forcing SSL and listing the paths to the known good certificates. To generate long term certificates: openssl genrsa -out /tmp/KEY 4096 openssl req -new -key /tmp/KEY -out /tmp/REQ openssl x509 -req -days 999999 -sha256 -in /tmp/REQ -signkey /tmp/KEY -out /tmp/CERT /tmp/KEY is the private key, and /tmp/CERT is the certificate, both in PEM format. /tmp/REQ can be removed. Adjust the last command to set expiration date, etc, as needed. It doesn't make a whole lot of sense for monero anyway, since most servers will run with one time temporary self signed certificates anyway. SSL support is transparent, so all communication is done on the existing ports, with SSL autodetection. This means you can start using an SSL daemon now, but you should not enforce SSL yet or nothing will talk to you.
2019-03-04default initialize rpc structuresmoneromooo-monero1-0/+14
2019-02-18epee: Add space after ':' in additional http response headersTom Smeding1-1/+1
2019-02-10Use io_service::work in epee tcp serverLee Clagett2-6/+14
2019-02-02epee: add SSL supportmoneromooo-monero8-198/+539
RPC connections now have optional tranparent SSL. An optional private key and certificate file can be passed, using the --{rpc,daemon}-ssl-private-key and --{rpc,daemon}-ssl-certificate options. Those have as argument a path to a PEM format private private key and certificate, respectively. If not given, a temporary self signed certificate will be used. SSL can be enabled or disabled using --{rpc}-ssl, which accepts autodetect (default), disabled or enabled. Access can be restricted to particular certificates using the --rpc-ssl-allowed-certificates, which takes a list of paths to PEM encoded certificates. This can allow a wallet to connect to only the daemon they think they're connected to, by forcing SSL and listing the paths to the known good certificates. To generate long term certificates: openssl genrsa -out /tmp/KEY 4096 openssl req -new -key /tmp/KEY -out /tmp/REQ openssl x509 -req -days 999999 -sha256 -in /tmp/REQ -signkey /tmp/KEY -out /tmp/CERT /tmp/KEY is the private key, and /tmp/CERT is the certificate, both in PEM format. /tmp/REQ can be removed. Adjust the last command to set expiration date, etc, as needed. It doesn't make a whole lot of sense for monero anyway, since most servers will run with one time temporary self signed certificates anyway. SSL support is transparent, so all communication is done on the existing ports, with SSL autodetection. This means you can start using an SSL daemon now, but you should not enforce SSL yet or nothing will talk to you.
2019-02-01network_throttle: use circular_buffer where appropriatemoneromooo-monero1-1/+2
2019-01-30i2p: initial supportJethro Grassie1-1/+4
2019-01-28Adding initial support for broadcasting transactions over TorLee Clagett5-98/+267
- Support for ".onion" in --add-exclusive-node and --add-peer - Add --anonymizing-proxy for outbound Tor connections - Add --anonymous-inbounds for inbound Tor connections - Support for sharing ".onion" addresses over Tor connections - Support for broadcasting transactions received over RPC exclusively over Tor (else broadcast over public IP when Tor not enabled).
2019-01-28rpc: fix internal daemon calls in restricted rpc getting partial datamoneromooo-monero1-6/+6
2019-01-22Pruningmoneromooo-monero2-2/+10
The blockchain prunes seven eighths of prunable tx data. This saves about two thirds of the blockchain size, while keeping the node useful as a sync source for an eighth of the blockchain. No other data is currently pruned. There are three ways to prune a blockchain: - run monerod with --prune-blockchain - run "prune_blockchain" in the monerod console - run the monero-blockchain-prune utility The first two will prune in place. Due to how LMDB works, this will not reduce the blockchain size on disk. Instead, it will mark parts of the file as free, so that future data will use that free space, causing the file to not grow until free space grows scarce. The third way will create a second database, a pruned copy of the original one. Since this is a new file, this one will be smaller than the original one. Once the database is pruned, it will stay pruned as it syncs. That is, there is no need to use --prune-blockchain again, etc.
2018-12-23epee: better network buffer data structuremoneromooo-monero6-40/+97
avoids pointless allocs and memcpy
2018-12-04epee: fix network packet header field endiannessmoneromooo-monero4-53/+108
2018-12-04Changed RECIEVED to RECEIVED in log messages.Norman Moeschter2-2/+2
2018-11-15Removed a lot of unnecessary includesMartijn Otto4-18/+4
2018-11-07No longer use a list for registering self references in the abstract tcpMartijn Otto2-6/+10
server Updated assert message Use a local variable that won't destruct at the end of the if-branch Updated comment
2018-11-05epee: log HTTP/RPC calls at info levelmoneromooo-monero1-1/+6
It's useful info to have when investigating logs
2018-10-12Remove epee header dependency on cryptonote_coremoneromooo-monero2-6/+5
2018-10-02epee: initialize a few data members where it seems to be appropriatemoneromooo-monero1-1/+3
2018-10-02abstract_tcp_server2: move m_period to subclassmoneromooo-monero1-5/+6
This is where it is actually used, and initialized
2018-10-02connection_basic: remove unused floating time start timemoneromooo-monero1-3/+0
2018-09-29Merge pull request #4459Riccardo Spagni2-1/+8
bcf3f6af fuzz_tests: catch unhandled exceptions (moneromooo-monero) 3ebd05d4 miner: restore stream flags after changing them (moneromooo-monero) a093092e levin_protocol_handler_async: do not propagate exception through dtor (moneromooo-monero) 1eebb82b net_helper: do not propagate exceptions through dtor (moneromooo-monero) fb6a3630 miner: do not propagate exceptions through dtor (moneromooo-monero) 2e2139ff epee: do not propagate exception through dtor (moneromooo-monero) 0749a8bd db_lmdb: do not propagate exceptions in dtor (moneromooo-monero) 1b0afeeb wallet_rpc_server: exit cleanly on unhandled exceptions (moneromooo-monero) 418a9936 unit_tests: catch unhandled exceptions (moneromooo-monero) ea7f9543 threadpool: do not propagate exceptions through the dtor (moneromooo-monero) 6e855422 gen_multisig: nice exit on unhandled exception (moneromooo-monero) 53df2deb db_lmdb: catch error in mdb_stat calls during migration (moneromooo-monero) e67016dd blockchain_blackball: catch failure to commit db transaction (moneromooo-monero) 661439f4 mlog: don't remove old logs if we failed to rename the current file (moneromooo-monero) 5fdcda50 easylogging++: test for NULL before dereference (moneromooo-monero) 7ece1550 performance_test: fix bad last argument calling add_arg (moneromooo-monero) a085da32 unit_tests: add check for page size > 0 before dividing (moneromooo-monero) d8b1ec8b unit_tests: use std::shared_ptr to shut coverity up about leaks (moneromooo-monero) 02563bf4 simplewallet: top level exception catcher to print nicer messages (moneromooo-monero) c57a65b2 blockchain_blackball: fix shift range for 32 bit archs (moneromooo-monero)
2018-09-09abstract_tcp_server2: fix binding to the wrong IPmoneromooo-monero1-4/+4
2018-08-27epee: use the socket::bind variant which does not throwmoneromooo-monero1-2/+18
When this throws in a loop, stack trace generation can take a significant amount of CPU
2018-07-25epee: set jsonrpc to "2.0" in parse error return datamoneromooo-monero1-0/+1
2018-07-15abstract_tcp_server2: fix race on shutdownmoneromooo-monero2-1/+9
2018-07-03http_protocol_handler: fix HTTP/x.y parsingmoneromooo-monero1-1/+1
It was accepting any character for the dot (yeah, massive big I know)
2018-07-03http_protocol_handler: catch invalid numbers when parsingmoneromooo-monero1-4/+12
2018-06-29abstract_tcp_server2: fix use after freemoneromooo-monero1-2/+2
2018-06-18abstract_tcp_server2: restart async accept on errormoneromooo-monero1-4/+19
2018-06-13wallet-rpc: added IPs to error logging in simple_http_connection_handlerjcktm2-18/+18
2018-06-10epee: adaptive connection timeout systemmoneromooo-monero4-19/+75
a connection's timeout is halved for every extra connection from the same host. Also keep track of when we don't need to use a connection anymore, so we can close it and free the resource for another connection. Also use the longer timeout for non routable local addresses.
2018-06-09abstract_tcp_server2: fix busy calling of idle IO servicemoneromooo-monero1-2/+4
This would make monerod use 100% CPU when running with torsocks without Tor running
2018-06-01epee: fix detection of 172.16.0.0/172.31.255.255 local IP rangemoneromooo-monero1-1/+1
2018-05-27http_protocol_handler: limit the number of starting newlinesmoneromooo-monero3-1/+12
2018-05-26abstract_tcp_server2: timeout on RPC connectionsmoneromooo-monero2-1/+68
2018-05-26http_protocol_handler: speedup newline discardingmoneromooo-monero1-2/+5
2018-04-19epee: Drop deprecated Boost.Thread headerJan Beich1-1/+2
In file included from src/cryptonote_basic/hardfork.cpp:33: In file included from src/blockchain_db/blockchain_db.h:42: In file included from src/cryptonote_basic/hardfork.h:31: contrib/epee/include/syncobj.h:37:10: fatal error: 'boost/thread/v2/thread.hpp' file not found #include <boost/thread/v2/thread.hpp> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from src/rpc/daemon_handler.cpp:29: In file included from src/rpc/daemon_handler.h:36: In file included from src/p2p/net_node.h:41: In file included from contrib/epee/include/net/levin_server_cp2.h:32: In file included from contrib/epee/include/net/abstract_tcp_server2.h:324: contrib/epee/include/net/abstract_tcp_server2.inl:44:10: fatal error: 'boost/thread/v2/thread.hpp' file not found #include <boost/thread/v2/thread.hpp> // TODO ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ contrib/epee/include/math_helper.h: In member function 'bool epee::math_helper::average<val, default_base>::set_base()': contrib/epee/include/syncobj.h:227:56: error: 'sleep_for' is not a member of 'boost::this_thread' #define CRITICAL_REGION_LOCAL(x) {boost::this_thread::sleep_for(boost::chrono::milliseconds(epee::debug::g_test_dbg_lock_sleep()));} epee::critical_region_t<decltype(x)> critical_region_var(x) ^ contrib/epee/include/syncobj.h:227:56: note: in definition of macro 'CRITICAL_REGION_LOCAL' #define CRITICAL_REGION_LOCAL(x) {boost::this_thread::sleep_for(boost::chrono::milliseconds(epee::debug::g_test_dbg_lock_sleep()));} epee::critical_region_t<decltype(x)> critical_region_var(x) ^~~~~~~~~ contrib/epee/include/syncobj.h:227:56: note: suggested alternative: 'sleep' #define CRITICAL_REGION_LOCAL(x) {boost::this_thread::sleep_for(boost::chrono::milliseconds(epee::debug::g_test_dbg_lock_sleep()));} epee::critical_region_t<decltype(x)> critical_region_var(x) ^ contrib/epee/include/syncobj.h:227:56: note: in definition of macro 'CRITICAL_REGION_LOCAL' #define CRITICAL_REGION_LOCAL(x) {boost::this_thread::sleep_for(boost::chrono::milliseconds(epee::debug::g_test_dbg_lock_sleep()));} epee::critical_region_t<decltype(x)> critical_region_var(x) ^~~~~~~~~
2018-03-15Fix typos in various filesDimitris Apostolou2-2/+2
2018-02-11Fix #602 Turn on socket keepaliveHoward Chu1-0/+3
2018-02-02pass large parameters by const ref, not valuemoneromooo-monero3-10/+10
Coverity 136394 136397 136409 136526 136529 136533 175302
2018-01-29Allow the number of incoming connections to be limitedErik de Castro Lopo1-33/+45
It was already possible to limit outgoing connections. One might want to do this on home network connections with high bandwidth but low usage caps.
2018-01-26Update 2018 copyrightxmr-eric4-4/+4
2018-01-26levin_protocol_handler_async: erase from back of vector instead of frontstoffu1-1/+1
2018-01-10epee: remove dependency on commonmoneromooo-monero4-7/+9
2017-12-23http_client: rewrite header parsing manually for speedmoneromooo-monero1-74/+95
boost::regex is stupendously atrocious at parsing malformed data
2017-12-23tests: add http client fuzz testmoneromooo-monero1-3/+14
2017-12-18network_throttle: remove unused xxx static membermoneromooo-monero1-2/+0
2017-12-18abstract_tcp_server2: log init_server errors as fatalmoneromooo-monero1-1/+11
so they show up by default
2017-12-18net_parse_helpers: fix regex error checkingmoneromooo-monero1-2/+2
2017-12-18add empty container sanity checks when using front() and back()moneromooo-monero1-1/+1
2017-12-18epee: trap failure to parse URI from requestmoneromooo-monero1-1/+6
2017-12-16move connection_basic and network_throttle from src/p2p to epeemoneromooo-monero4-2/+444
These even had the epee namespace. This fixes some ugly circular dependencies.
2017-12-16move includes around to lessen overall loadmoneromooo-monero5-42/+11
2017-12-15levin_protocol_handler_async: another attempt at fixing at exceptionmoneromooo-monero1-3/+12
2017-12-15Revert "epee: keep a ref to a connection we're deleting"moneromooo-monero1-8/+2
This reverts commit f2939bdce8c86b0f96921f731184c361106390c8.
2017-12-15levin_protocol_handler_async: add missing response handler lockingmoneromooo-monero1-5/+9
2017-12-11levin_protocol_handler_async: call handler destroy function on dtormoneromooo-monero1-0/+1
2017-12-09net_utils_base: fix peer list parsingmoneromooo-monero1-3/+25
Fields are written with their "name" as key, and that name changed.
2017-11-28Corrections in rate limiting / trottle code, especially in 'out' directionrbrunner71-5/+4
Deleted 3 out of 4 calls to method connection_basic::sleep_before_packet that were erroneous / superfluous, which enabled the elimination of a "fudge" factor of 2.1 in connection_basic::set_rate_up_limit; also ended the multiplying of limit values and numbers of bytes transferred by 1024 before handing them over to the global throttle objects
2017-11-27new wipeable_string class to replace std::string passphrasesmoneromooo-monero1-3/+3
2017-11-16RPC: CORS add Access-Control-Allow-Headers to OPTIONS preflightTim L1-0/+3
2017-11-14remove "using namespace std" from headersmoneromooo-monero1-2/+0
It's nasty, and actually breaks on Solaris, where if.h fails to build due to: struct map *if_memmap;
2017-11-07RPC: get_info add rpc_connections_countTim L2-0/+11
2017-11-03Fix file permission issueTim L6-0/+0
This branch fixes a file permission issue introduced by https://github.com/monero-project/monero/commit/69c37200aa87f100f731e755bdca7a0dc6ae820a
2017-10-30RPC Add cross origin resource sharing supportTim L6-17/+60
2017-10-20net_helper: fix massive slowdown after SSL supportmoneromooo-monero1-5/+5
2017-10-17epee: use boost type for SSL error coderedfish1-1/+9
Fixes compile error when building with OpenSSL v1.1: contrib/epee/include/net/net_helper.h: In member function ‘void epee::net_utils::blocked_mode_client::shutdown_ssl()’: contrib/epee/include/net/net_helper.h:579:106: error: ‘SSL_R_SHORT_READ’ was not declared in this scope if (ec.category() == boost::asio::error::get_ssl_category() && ec.value() != ERR_PACK(ERR_LIB_SSL, 0, SSL_R_SHORT_READ)) ^ contrib/epee/include/net/net_helper.h:579:106: note: suggested alternative: ‘SSL_F_SSL_READ’ See boost/asio/ssl/error.hpp. Boost handles differences between OpenSSL versions. cmake: fail if Boost is too old for OpenSSL v1.1
2017-10-15epee http_client SSL supportJaquee2-45/+107
2017-10-09Fix an object lifetime bug in net load testsmoneromooo-monero4-5/+26
The commands handler must not be destroyed before the config object, or we'll be accessing freed memory. An earlier attempt at using boost::shared_ptr to control object lifetime turned out to be very invasive, though would be a better solution in theory.
2017-10-07frob level 1 logs a bit for consistencymoneromooo-monero1-2/+2
Level 1 logs map to INFO, so setting log level to 1 should show these. Demote some stuff to DEBUG to avoid spam, though.
2017-10-05Upgrades to epee::net_utils::network_addressLee Clagett2-71/+127
- internal nullptr checks - prevent modifications to network_address (shallow copy issues) - automagically works with any type containing interface functions - removed fnv1a hashing - ipv4_network_address now flattened with no base class
2017-09-25http_base: init size_t in http_request_info ctormoneromooo-monero1-1/+2
CID 161879
2017-09-19epee: keep a ref to a connection we're deletingmoneromooo-monero1-2/+8
close might end up dropping a ref, ending up removing the connection from m_connects, as the lock is recursive. This'd cause an out of bounds exception and kill the idle connection maker thread
2017-09-18epee: give virtual dtor to network_address_basemoneromooo-monero1-0/+3
It has virtual functions and is used as a base class
2017-08-22http_client: add getters for host and portmoneromooo-monero1-0/+3
2017-08-16abstract_tcp_server2: improve tracking/cancelling of early connectionsmoneromooo-monero2-22/+15
We don't actually need to keep them past the call to start, as this adds them to the config object list, and so they'll then be cancelled already when the stop signal arrives. This allows removing the periodic call to cleanup connections.
2017-08-07cryptonote_protocol_handler: sync speedupmoneromooo-monero1-0/+14
A block queue is now placed between block download and block processing. Blocks are now requested only from one peer (unless starved). Includes a new sync_info coommand.
2017-08-01p2p: move m_in_timedsync from connection_context to p2p_connection_contextmoneromooo-monero1-3/+0
It's got no place in the base class as it's P2P specific field
2017-07-05epee: don't send the body of the response to a HEAD HTTP requestGuillaume LE VAILLANT1-1/+1
According to the HTTP spec: "The HEAD method is identical to GET except that the server MUST NOT return a message-body in the response".
2017-07-05Fix spelling errorsErik de Castro Lopo5-8/+8
2017-07-01Fix issue #2119 SEGVHoward Chu1-15/+20
Due to bad refactoring in PR #2073. timeout_handler() doesn't work as a virtual function.
2017-06-28abstract_tcp_server2: guard against accessing lock on a destroyed objectmoneromooo-monero1-3/+3
2017-06-28Remove typeid use in network_addressmoneromooo-monero1-3/+2
Since I had to add an ID to the derived classes anyway, this can be used instead. This removes an apparently pointless warning from CLANG too.
2017-06-19net_utils_base: added missing template keywordkenshi841-1/+1