aboutsummaryrefslogtreecommitdiff
path: root/src/netbase.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Merge #10812: [utils] Allow bitcoin-cli's -rpcconnect option to be used with ↵Pieter Wuille2017-07-151-19/+0
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | square brackets 5c643241e [utils] allow square brackets for ipv6 addresses in bitcoin-cli (John Newbery) fe4fabaf1 [refactor] move SplitHostPort() into utilstrencodings (John Newbery) Pull request description: bitcoin-cli's `-rpcconnect` can accept ipv6 addresses (as long as the libevent version is new enough), but fails to parse ipv6 with square brackets. This PR makes `bitcoin-cli` parse ipv6 in square brackets correctly. `bitcoin-cli -rpcconnect=[::1] <command>` should now be equivalent to `bitcoin-cli -rpcconnect=::1 <command>` This is useful so the `bitcoin-cli` option can now be in the same format as the `bitcoind` option. Doesn't include tests. I have a branch that fully tests `bitcoin-cli`, but that's queued behind several intermediate PRs. - first commit moves `SplitHostPort()` from libbitcoin_common into libbitcoin_util - second commit adds proper ipv6 parsing to bitcoin-cli Tree-SHA512: 249d409f10360c989474283341f458cc97364a56a7d004ae6d5f13d8bffe3a51b5dc2484d42218848e2d42cd9c0b13a1b92e94ea19b209f7e91c875c208d8409
| * [refactor] move SplitHostPort() into utilstrencodingsJohn Newbery2017-07-121-19/+0
| | | | | | | | | | This moves SplitHostPort from libbitcoin_common to libbitcoin_util so it is available to bitcoin-cli.
* | Fix uninitialized atomic variablesJoão Barbosa2017-07-131-1/+1
|/
* net: do not allow resolving to an internal addressCory Fields2017-06-141-2/+7
| | | | | | In order to prevent mixups, our internal range is never allowed as a resolve result. This means that no user-provided string will ever be confused with an internal address.
* Merge #9539: [net] Avoid initialization to a value that is never readWladimir J. van der Laan2017-05-231-1/+2
|\ | | | | | | | | | | 5844609 [net] Avoid initialization to a value that is never read (practicalswift) Tree-SHA512: 068c3fba58034187f546688bc9b8b7317e0657e797850613fb6289a4efc28637e4d06a0fa5e57480538c6b8340ed6d6a6c6f9a96f130b698d5d60975490a03d8
| * [net] Avoid initialization to a value that is never readpracticalswift2017-02-281-1/+2
| | | | | | | | | | Prior to this commit the value stored to `s` at initialization was never read (in the case of STRERROR_R_CHAR_P).
* | Merge #10061: [net] Added SetSocketNoDelay() utility functionPieter Wuille2017-05-171-6/+9
|\ \ | | | | | | | | | | | | | | | ad415bc [net] Added SetSocketNoDelay() utility function (Thomas Snider) Tree-SHA512: c19e3c9910b3fc2ef86f2434f3e91d343e9cd9e2116153941de9789e2a6fc0389bffe762d21b55cda4a4b1de993afee0564c6946e65d05cef9e866b58896f9af
| * | [net] Added SetSocketNoDelay() utility functionThomas Snider2017-04-051-6/+9
| | |
* | | Change LogAcceptCategory to use uint32_t rather than sets of strings.Gregory Maxwell2017-04-011-4/+4
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes the logging categories to boolean flags instead of strings. This simplifies the acceptance testing by avoiding accessing a scoped static thread local pointer to a thread local set of strings. It eliminates the only use of boost::thread_specific_ptr outside of lockorder debugging. This change allows log entries to be directed to multiple categories and makes it easy to change the logging flags at runtime (e.g. via an RPC, though that isn't done by this commit.) It also eliminates the fDebug global. Configuration of unknown logging categories now produces a warning.
* / build: cleanup: define MSG_DONTWAIT/MSG_NO_SIGNAL locallyWladimir J. van der Laan2017-03-051-1/+1
|/ | | | | | | | | | | | Define MSG_DONTWAIT and MSG_NO_SIGNAL in the implementation files that use them (`net.cpp` and `netbase.cpp`), instead of compat.h which is included all over the place. This avoids putting them in the global namespace, as defining them as 0 is a hack that works for our specific usage, but it is not a general solution. Also makes sure they are defined only once so the `!defined(MSG_x)` guard can go.
* netbase: Do not print an error on connection timeouts through proxyWladimir J. van der Laan2017-02-091-1/+8
| | | | | | If a timeout happens while reading the proxy response, this effectively means we timed out while connecting to the remote node. This is very common for Tor, so do not print an error message.
* netbase: Make InterruptibleRecv return an error code instead of boolWladimir J. van der Laan2017-02-091-18/+27
|
* Merge #9289: net: drop boost::thread_groupWladimir J. van der Laan2017-01-041-9/+10
|\ | | | | | | | | | | | | | | | | | | 67ee4ec net: misc header cleanups (Cory Fields) 8b3159e net: make proxy receives interruptible (Cory Fields) 5cb0fce net: remove thread_interrupted catch (Cory Fields) d3d7056 net: make net processing interruptible (Cory Fields) 0985052 net: make net interruptible (Cory Fields) 799df91 net: add CThreadInterrupt and InterruptibleSleep (Cory Fields) 7325b15 net: a few small cleanups before replacing boost threads (Cory Fields)
| * net: misc header cleanupsCory Fields2017-01-031-7/+0
| |
| * net: make proxy receives interruptibleCory Fields2017-01-031-2/+10
| |
* | Increment MIT Licence copyright header year on files modified in 2016isle29832016-12-311-1/+1
|/ | | | | | Edited via: $ contrib/devtools/copyright_header.py update .
* Refactor: Removed begin/end_ptr functions.Karl-Johan Alm2016-12-091-3/+3
|
* Revert "Use async name resolving to improve net thread responsiveness"Matt Corallo2016-12-011-47/+1
| | | | | | | | | | This reverts commit caf6150e9785da408f1e603ae70eae25b5202d98. getaddrinfo_a has a nasty tendency to segfault internally in its background thread, on every version of glibc I tested, especially under helgrind. See https://sourceware.org/bugzilla/show_bug.cgi?id=20874
* Kill insecure_random and associated global stateWladimir J. van der Laan2016-10-171-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are only a few uses of `insecure_random` outside the tests. This PR replaces uses of insecure_random (and its accompanying global state) in the core code with an FastRandomContext that is automatically seeded on creation. This is meant to be used for inner loops. The FastRandomContext can be in the outer scope, or the class itself, then rand32() is used inside the loop. Useful e.g. for pushing addresses in CNode or the fee rounding, or randomization for coin selection. As a context is created per purpose, thus it gets rid of cross-thread unprotected shared usage of a single set of globals, this should also get rid of the potential race conditions. - I'd say TxMempool::check is not called enough to warrant using a special fast random context, this is switched to GetRand() (open for discussion...) - The use of `insecure_rand` in ConnectThroughProxy has been replaced by an atomic integer counter. The only goal here is to have a different credentials pair for each connection to go on a different Tor circuit, it does not need to be random nor unpredictable. - To avoid having a FastRandomContext on every CNode, the context is passed into PushAddress as appropriate. There remains an insecure_random for test usage in `test_random.h`.
* Do not shadow variables in networking codePavel Janík2016-08-151-3/+3
|
* net: Have LookupNumeric return a CService directlyCory Fields2016-08-041-2/+7
| | | | | | Also fix up a few small issues: - Lookup with "badip:port" now sets the port to 0 - Don't allow assert to have side-effects
* net: move CNetAddr/CService/CSubNet out of netbaseCory Fields2016-07-311-705/+0
|
* net: Split resolving out of CSubNetCory Fields2016-07-311-36/+58
|
* net: Split resolving out of CServiceCory Fields2016-07-311-33/+1
|
* net: Split resolving out of CNetAddrCory Fields2016-07-311-16/+10
|
* Randomize name lookup result in ConnectSocketByNamePieter Wuille2016-06-131-4/+4
|
* Use Socks5ErrorString() to decode error responses from socks proxy.Warren Togami2016-05-191-12/+16
|
* Make Socks5() InterruptibleRecv() timeout/failures informative.Warren Togami2016-05-171-1/+2
| | | | | | | | Before: 2016-05-16 06:10:45 ERROR: Error reading proxy response After: 2016-05-16 06:10:45 Socks5() connect to k7s5d6jqig4ej4v4.onion:18333 failed: InterruptibleRecv() timeout or other failure
* SOCKS5 connecting and connected messages with -debug=net.Warren Togami2016-05-091-2/+2
| | | | They were too noisy and not necessary for normal operation.
* Make failures to connect via Socks5() more informative and less ↵Warren Togami2016-05-091-9/+11
| | | | | | | | | | | | | unnecessarily scary. * The "ERROR" was printed far too often during normal operation for what was not an error. * Makes the Socks5() connect failure similar to the IP connect failure in debug.log. Before: `2016-05-09 00:15:00 ERROR: Proxy error: host unreachable` After: `2016-05-09 00:15:00 Socks5() connect to t6xj6wilh4ytvcs7.onion:18333 failed: host unreachable"`
* net: disable resolving from storage structuresCory Fields2016-04-201-14/+14
| | | | CNetAddr/CService/CSubnet can no longer resolve DNS.
* net: resolve outside of storage structuresCory Fields2016-04-201-4/+6
| | | | | | | | Rather than allowing CNetAddr/CService/CSubNet to launch DNS queries, require that addresses are already resolved. This greatly simplifies async resolve logic, and makes it harder to accidentally leak DNS queries.
* Net: Add IPv6 Link-Local Address Supportmruddy2016-04-051-3/+7
|
* Typo fixes in commentsChris Wheeler2016-01-171-1/+1
|
* Bump copyright headers to 2015MarcoFalke2015-12-131-1/+1
|
* [trivial] Reuse translation and cleanup DEFAULT_* valuesMarcoFalke2015-11-281-1/+1
| | | | | * DEFAULT_DISABLE_SAFEMODE = false * Use DEFAULT_* constants for extern bools
* Constrain constant values to a single location in codeLuke Dashjr2015-11-281-1/+1
|
* net: Automatically create hidden service, listen on TorWladimir J. van der Laan2015-11-101-4/+1
| | | | | | | | | | | | | | | | | | | | Starting with Tor version 0.2.7.1 it is possible, through Tor's control socket API, to create and destroy 'ephemeral' hidden services programmatically. https://stem.torproject.org/api/control.html#stem.control.Controller.create_ephemeral_hidden_service This means that if Tor is running (and proper authorization is available), bitcoin automatically creates a hidden service to listen on, without user manual configuration. This will positively affect the number of available .onion nodes. - When the node is started, connect to Tor through control socket - Send `ADD_ONION` command - First time: - Make it create a hidden service key - Save the key in the data directory for later usage - Make it redirect port 8333 to the local port 8333 (or whatever port we're listening on). - Keep control socket connection open for as long node is running. The hidden service will (by default) automatically go away when the connection is closed.
* Set TCP_NODELAY on P2P sockets.Gregory Maxwell2015-10-221-1/+8
| | | | | | | | Nagle appears to be a significant contributor to latency now that the static sleeps are gone. Most of our messages are relatively large compared to IP + TCP so I do not expect this to create enormous overhead. This may also reduce traffic burstyness somewhat.
* net: Fix CIDR notation in ToString()Wladimir J. van der Laan2015-09-161-10/+48
| | | | Only use CIDR notation if the netmask can be represented as such.
* net: use CIDR notation in CSubNet::ToString()Jonas Schnelli2015-09-161-9/+11
|
* Merge pull request #6556Wladimir J. van der Laan2015-08-201-1/+1
|\ | | | | | | | | 1123cdb add unit test for CNetAddr::GetGroup. (Alex Morcos) bba3db1 Fix masking of irrelevant bits in address groups. (Alex Morcos)
| * Fix masking of irrelevant bits in address groups.Alex Morcos2015-08-141-1/+1
| |
* | typofixes (found by misspell_fixer)Veres Lajos2015-08-101-1/+1
|/
* Test whether created sockets are select()ablePieter Wuille2015-07-101-0/+3
|
* Adding CSubNet constructor over a single CNetAddrJonas Schnelli2015-07-021-0/+7
|
* fix CSubNet comparison operatorJonas Schnelli2015-06-171-1/+1
|
* [RPC] extend setban to allow subnetsJonas Schnelli2015-06-171-0/+5
|
* [net, trivial] remove using namespace std pollution in netbase.cppPhilip Kaufmann2015-05-311-4/+2
|
* Fix two problems in CSubNet parsingWladimir J. van der Laan2015-05-261-1/+5
| | | | | | | | | | | | | | | Fix two CSubNet constructor problems: - The use of `/x` where 8 does not divide x was broken, due to a bit-order issue - The use of e.g. `1.2.3.4/24` where the netmasked bits in the network are not 0 was broken. Fix this by explicitly normalizing the netwok according to the bitmask. Also add tests for these cases. Fixes #6179. Thanks to @jonasschnelli for reporting and initial fix.