Commit Graph
100 Commits
Author SHA1 Message Date
Jeff Garzik d9dd0318e1 Merge pull request #2601 from jgarzik/uri-validate
RPC: strictly require HTTP URI "/"
2013-05-02 12:26:55 -07:00
Jeff Garzik 9f4976afe2 RPC: strictly require HTTP URI "/"
Previously, JSON-RPC clients accessed URI "/", and the JSON-RPC server
did not care about the URI at all, and would accept any URI as valid.

Change the JSON-RPC server to require URI "/" for all current accesses.

This changes enables the addition of future interfaces at different
URIs, such as pull request #1982 which demonstrates HTTP REST wallet
download.

Or, a future, breaking change in JSON-RPC interface could be introduced
by serving JSON-RPC calls from new URI "/v2/".
2013-05-01 10:41:24 -04:00
Jeff Garzik 1483aac5f9 net.cpp: Do not change primary process name from (default) to "bitcoin-start"
Discussed a bit on IRC.
2013-04-08 22:02:57 -04:00
Jeff Garzik a0cafb7945 Move GenerateBitcoins() call out of net.cpp's StartNode()
The internal miner is closely bound to the wallet engine,
not the blockchain engine.
2013-03-31 01:54:27 -04:00
Jeff Garzik e3c063b315 Merge pull request #2409 from sipa/txoptim
Network optimalizations
2013-03-30 21:05:22 -07:00
Jeff Garzik b9ff2970b9 P2P: improve RX/TX flow control
1) "optimistic write": Push each message to kernel socket buffer immediately.

2) If there is write data at select time, that implies send() blocked
   during optimistic write.  Drain write queue, before receiving
   any more messages.

This avoids needlessly queueing received data, if the remote peer
is not themselves receiving data.

Result: write buffer (and thus memory usage) is kept small, DoS
potential is slightly lower, and TCP flow control signalling is
properly utilized.

The kernel will queue data into the socket buffer, then signal the
remote peer to stop sending data, until we resume reading again.
2013-03-29 23:56:25 +01:00
Jeff Garzik bc2f5aa72c P2P, cosmetic: break out buffer send(2) code into separate function 2013-03-29 23:56:25 +01:00
Jeff Garzik 607dbfdeaf P2P: parse network datastream into header/data components in socket thread
Replaces CNode::vRecv buffer with a vector of CNetMessage's.  This simplifies
ProcessMessages() and eliminates several redundant data copies.

Overview:

* socket thread now parses incoming message datastream into
  header/data components, as encapsulated by CNetMessage
* socket thread adds each CNetMessage to a vector inside CNode
* message thread (ProcessMessages) iterates through CNode's CNetMessage vector

Message parsing is made more strict:

* Socket is disconnected, if message larger than MAX_SIZE
  or if CMessageHeader deserialization fails (latter is impossible?).
  Previously, code would simply eat garbage data all day long.
* Socket is disconnected, if we fail to find pchMessageStart.
  We do not search through garbage, to find pchMessageStart.  Each
  message must begin precisely after the last message ends.

ProcessMessages() always processes a complete message, and is more efficient:

* buffer is always precisely sized, using CDataStream::resize(),
  rather than progressively sized in 64k chunks.  More efficient
  for large messages like "block".
* whole-buffer memory copy eliminated (vRecv -> vMsg)
* other buffer-shifting memory copies eliminated (vRecv.insert, vRecv.erase)
2013-03-29 23:56:25 +01:00
Jeff Garzik ea83336f4e Merge pull request #2411 from TheBlueMatt/master
(finally) Remove IRC Seed support now that lfnet is down.
2013-03-29 08:03:18 -07:00
Jeff Garzik 8455310a7b Merge pull request #2385 from gavinandresen/alertnotify
alertnotify, so bitcoind users can get email/sms/whatever of alerts
2013-03-29 07:49:56 -07:00
Jeff Garzik e48aa6076a Merge pull request #2295 from sipa/tidydir
Add script to clean up datadirs
2013-02-10 21:02:12 -08:00
Jeff Garzik f166e0dd2f Merge pull request #2297 from sipa/notes
Some improvements to the release notes
2013-02-10 21:01:47 -08:00
Jeff Garzik 353b7f4a9c Merge pull request #2237 from petertodd/testnet-dnsseed
Add DNS seed support for testnet
2013-02-04 06:51:03 -08:00
Jeff Garzik 2daa2c13e1 Merge pull request #2250 from colindean/doc/root-readme
update and reformat README.md
2013-02-04 06:43:20 -08:00
Jeff Garzik 2835080e16 Merge pull request #2231 from sipa/cleanups
Two cleanups before 0.8
2013-01-29 18:08:12 -08:00
Jeff Garzik 699bc3d14d Merge pull request #2234 from gavinandresen/seednodes
New seed nodes, from http://bitcoin.sipa.be/seeds.txt
2013-01-29 18:07:30 -08:00
Jeff Garzik 0d3d6094fa Merge pull request #2162 from gavinandresen/spendfrom
spendfrom.py sends coins from a particular address or addresses
2013-01-26 12:13:39 -08:00
Jeff Garzik e0c8fbac35 Merge pull request #2169 from Diapolo/small_main_h_cleanup
small main.h cleanup (no code changes)
2013-01-11 09:17:14 -08:00
Jeff Garzik ea9788517b test/util_tests.cpp: one more DateTimeStrFormat 'T' removal 2013-01-01 19:48:28 -05:00
Jeff Garzik 3f964b3c50 Remove 'T' from remaining date/time format strings. 2013-01-01 15:28:28 -05:00
Jeff Garzik 393819cde4 Remove 'T' from debug log timestamps
Space separation between major fields is easier for human eyes and
libs to parse.
2012-12-30 20:46:54 -05:00
Jeff Garzik e6955d0411 New 'checkpoints' option should default to true. 2012-11-28 12:10:57 -05:00
Jeff Garzik 857b3ad923 Add "checkpoints" option, to permit disabling of checkpoint logic. 2012-11-28 12:07:42 -05:00
Jeff Garzik 3ef292dc7d Merge pull request #1670 from luke-jr/blksubstr
Use full block hash as unique identifier in debug.log
2012-11-15 18:47:07 -08:00
Jeff Garzik 848c0d5d95 Merge pull request #1945 from centromere/leveldb_fix
Fixed compile error on FreeBSD 9.
2012-11-15 18:31:20 -08:00
Jeff Garzik 34ea321ccd Merge pull request #1987 from jgarzik/no-pw-match
RPC: Forbid RPC username == RPC password
2012-11-15 18:22:50 -08:00
Jeff Garzik 824e196054 Merge pull request #2005 from Diapolo/fixes_main
some small fixes for main.cpp/.h
2012-11-15 18:20:35 -08:00
Jeff Garzik a0bf93b809 Merge pull request #2012 from luke-jr/invblk_errs
Print error for coinbase-pays-too-much case of ConnectBlock failing
2012-11-15 18:18:55 -08:00
Jeff Garzik fdbb537d26 Add new RPC "lockunspent", to prevent spending of selected outputs
and associated RPC "listlockunspent".

This is a memory-only filter, which is empty when a node restarts.
2012-11-15 21:11:30 -05:00
Jeff Garzik 7e1610d51e RPC: Forbid RPC username == RPC password
Added security measure.
2012-11-15 20:33:42 -05:00
Jeff Garzik 3b9f029def Merge pull request #2008 from sipa/scriptflags
Introduce script verification flags
2012-11-15 14:49:06 -08:00
Jeff Garzik fcf234fc08 RPC: HTTP server uses its own ReadHTTPRequestLine()
rather than reusing ReadHTTPStatus() from the client mode.

The following additional HTTP request validations are added, both in line with
existing HTTP client practice:

1) HTTP method must be GET or POST.  Most clients use POST, some
   use GET.  Either way, this continues to work.
2) HTTP URI must start with "/" character.
   Normal URI is "/" (a 1-char string), so this is fine.
2012-11-04 17:16:46 -05:00
Jeff Garzik 2306dc4b76 RPC, cosmetic: push down ReadHTTPStatus() calls into ReadHTTP() callers
ReadHTTPStatus() is currently overloaded:  In client mode, it properly parses
and receives an HTTP status line.  In server mode, it incorrectly parses the
HTTP request line as an HTTP status line.

This server mode bug has never mattered, because the RPC server never
cared about the URI (path) provided in the HTTP request.  That will change in
the future, so go ahead and begin fixing the problem.

This patch is cosmetic, and should result in NO behavior changes.

Further renames:
ReadHTTPHeader -> ReadHTTPHeaders
ReadHTTP -> ReadHTTPMessage
2012-11-04 16:06:38 -05:00
Jeff Garzik 16eec89042 Merge pull request #1949 from sipa/bugfix_maturity
Ultraprune bugfixes
2012-10-22 17:39:16 -07:00
Jeff Garzik 38ac953b9d Merge pull request #1880 from sipa/threadimport
Move external block import to separate thread
2012-10-20 13:36:36 -07:00
Jeff Garzik dee0ee2ac9 Merge pull request #1742 from sipa/canonical
Check for canonical public keys and signatures
2012-10-20 10:56:04 -07:00
Jeff Garzik de2b9459bd Merge pull request #1834 from jgarzik/kickblocks
P2P: Do not request blocks from peers with fewer blocks than us
2012-10-08 15:15:58 -07:00
Jeff Garzik 56caa38a67 Merge pull request #1833 from jgarzik/mempool-query
Send 'mempool' P2P command at the start of each P2P session
2012-10-08 15:12:25 -07:00
Jeff Garzik bd2e140571 CAddrMan: verify pchMessageStart file marker, before reading address data
This avoids the case where you read the address data, before noticing it is
the wrong network.
2012-10-08 13:41:57 -04:00
Jeff Garzik 3e37e7eca4 Merge pull request #1871 from jgarzik/wallet-deadcode
walletdb.h: remove dead code
2012-09-28 17:05:16 -07:00
Jeff Garzik 189eb6a989 walletdb.h: remove dead code 2012-09-26 21:56:45 -04:00
Jeff Garzik 1381ad2b21 Merge pull request #1684 from jgarzik/bootstrap
Import $DataDir/bootstrap.dat automatically, if it exists.
2012-09-25 13:53:40 -07:00
Jeff Garzik 22f9b06903 Send 'mempool' P2P command at the start of each P2P session
to query remote node mempool contents.
2012-09-24 13:53:44 -04:00
Jeff Garzik 52c90a2b2b Import $DataDir/bootstrap.dat automatically, if it exists.
As discussed on IRC. Intended to make using an external blockchain download
solution just a bit easier.
2012-09-24 13:37:03 -04:00
Jeff Garzik 93dd68e924 P2P: Do not request blocks from peers with fewer blocks than us
If the remote node has a shorter chain, do not waste our
special getblocks request on them.
2012-09-24 13:26:09 -04:00
Jeff Garzik b1d3e95a0a When rejected TX relay due to lack of fees, log full txid 2012-09-18 15:24:31 -04:00
Jeff Garzik ea0796bde3 Trim trailing whitespace for src/*.{h,cpp} 2012-09-18 15:07:58 -04:00
Jeff Garzik f8c449b5c8 Merge pull request #1812 from jgarzik/misc-07
Two minor generic cleanups done during OP_DROP hacking
2012-09-18 09:14:53 -07:00
Jeff Garzik 17f8d6e400 Improve debug logging, for mempool TXs that do not include sufficient fees 2012-09-09 17:05:26 -04:00
Jeff Garzik 76970091f1 Cosmetic: move CTransaction::GetMinFee out of header file 2012-09-09 17:01:18 -04:00
Jeff Garzik 2387944782 select(): Use precise fd presence check, rather than imprecise hSocketMax test 2012-09-05 16:01:28 -04:00
Jeff Garzik 32416e380b Merge pull request #1791 from xanatos/patch-18
Correct LoadWallet() return value (false -> DB_LOAD_OK)
2012-09-05 06:32:55 -07:00
Jeff Garzik e271c1d3d0 Merge pull request #1789 from Diapolo/fix_double_Startuptime
remove double logging of startup time, when !fLogTimestamps
2012-09-04 23:39:15 -07:00
Jeff Garzik b930a2a6be Merge pull request #1788 from Diapolo/fix_unsigned_BlockFilePath
fix signed/unsigned usage in BlockFilePath()
2012-09-04 23:38:37 -07:00
Jeff Garzik 42613c97d5 Add block file naming helper, BlockFilePath() 2012-09-04 21:40:26 -04:00
Jeff Garzik dcb14198bb init.cpp: fix build error, and possibly-uninit'd warning 2012-09-04 12:24:08 -04:00
Jeff Garzik 38e8f282d2 Merge pull request #1427 from rebroad/StartTimeFix
No need to log start time if it's already being done on every line.
2012-09-04 09:10:47 -07:00
Jeff Garzik 2fd6f067db Merge pull request #1777 from laanwj/2012_09_eliminate_sprintf
Remove last occurrence of potentially insecure function sprintf
2012-09-04 09:00:02 -07:00
Jeff Garzik bec02998b4 Merge pull request #1779 from xanatos/patch-15
Useless vector declaration
2012-09-04 08:59:05 -07:00
Jeff Garzik 8c7b6c05db Merge pull request #1738 from laanwj/2012_08_boostthread
implement CreateThread with boost::thread
2012-09-04 08:53:05 -07:00
Jeff Garzik 0e1be81a4a Merge pull request #1771 from luke-jr/bugfix_bip22_mode
Bugfix: getblocktemplate: Accept optional "mode" parameter not being provided
2012-09-01 12:30:13 -07:00
Jeff Garzik c2cd13faa4 release-notes.txt: mention getmemorypool removal 2012-08-30 19:44:57 -04:00
Jeff Garzik 4445434a2d Merge pull request #1745 from gmaxwell/irc_fixes
Misc IRC fixes.
2012-08-29 11:02:21 -07:00
Jeff Garzik 5f38875807 Merge pull request #1748 from sipa/bugfix_portinc
Bugfix: increase score, not port
2012-08-28 17:43:38 -07:00
Jeff Garzik 06707dd610 Merge pull request #1741 from freewil/release-notes-remove-i2p
remove I2P support mention from release notes
2012-08-28 10:43:23 -07:00
Jeff Garzik 9c63fd8e76 Merge pull request #1739 from freewil/onlynet-release-notes
make use of -onlynet more clear in release notes
2012-08-28 10:41:55 -07:00
Jeff Garzik 0d9556f948 Merge pull request #1733 from Diapolo/Qt_changelog
add Qt GUI part to release-notes.txt
2012-08-27 14:54:23 -07:00
Jeff Garzik f29eaee30a Update release notes 2012-08-27 15:06:40 -04:00
Jeff Garzik cf78183fad Merge pull request #1707 from xanatos/patch-7
Removed useless assignment
2012-08-23 06:41:02 -07:00
Jeff Garzik 1954d40691 Merge pull request #1493 from jgarzik/unlocked-rpc
RPC: add facility to enable RPCs to run outside cs_main, wallet locks
2012-08-21 09:22:13 -07:00
Jeff Garzik 0e1d3551da RPC: add facility to enable RPCs to run outside cs_main, wallet locks
Use with 'stop' and 'help' RPCs.

This provides a facility to individually evaluate the locking for an RPC, and
potentially make it more parallel.
2012-08-21 12:03:52 -04:00
Jeff Garzik 5f2b41d54d Merge pull request #1693 from jgarzik/rpcwallet
Move code to new modules rpcwallet.cpp, rpcblockchain.cpp
2012-08-21 08:44:21 -07:00
Jeff Garzik c625ae04d2 RPC, cosmetic: move more RPC code to new rpcblockchain.cpp module 2012-08-21 11:03:38 -04:00
Jeff Garzik e3bc569865 RPC, cosmetic: move wallet-related RPCs to new rpcwallet.cpp module 2012-08-21 10:38:57 -04:00
Jeff Garzik a483c27704 Merge pull request #1691 from jgarzik/submitwork
Add 'submitblock' RPC, split out from 'getblocktemplate' RPC
2012-08-20 23:49:45 -07:00
Jeff Garzik a2168d94c0 RPC: submitblock returns null on success, string on error 2012-08-21 02:41:46 -04:00
Jeff Garzik 7600e7fc39 RPC, cosmetic: Create rpcmining.cpp as new home for mining-related RPC code 2012-08-21 02:21:33 -04:00
Jeff Garzik ddd1ffb4f1 RPC, cosmetic: de-indent getblocktemplate() 2012-08-21 02:06:09 -04:00
Jeff Garzik 79f2525ab6 RPC: split new 'submitblock' out of 'getblocktemplate' 2012-08-21 02:02:06 -04:00
Jeff Garzik af3b5ea569 Merge pull request #1526 from gavinandresen/heightincoinbase
Transition to requiring block height in block coinbases
2012-08-20 12:57:01 -07:00
Jeff Garzik b3a570d158 Merge pull request #1641 from jgarzik/mempool
Add 'mempool' P2P command, and extend 'getdata' behavior
2012-08-20 07:21:34 -07:00
Jeff Garzik 89a7bd644f Merge pull request #1686 from Diapolo/fix_comment
fix a comment in addrman.cpp
2012-08-18 09:15:11 -07:00
Jeff Garzik dabb95b892 Merge pull request #1678 from Diapolo/LoadExternalBlockFile_add_timer
log how long LoadExternalBlockFile() takes in ms (Benchmark)
2012-08-17 08:45:11 -07:00
Jeff Garzik 2c006b0b3e Merge pull request #1658 from TheBlueMatt/qttest
Fix several issues in the Qt unit tests.
2012-08-07 17:59:06 -07:00
Jeff Garzik dd199d0ebd Merge pull request #1650 from Diapolo/spelling_fixes
fix further spelling errors / remove a tab in the source
2012-08-02 14:36:45 -07:00
Jeff Garzik f81e6f779b Merge pull request #1632 from luke-jr/spelling
Fix spelling and grammar errors
2012-08-01 10:56:47 -07:00
Jeff Garzik ffe47d6d5d Merge pull request #1636 from Diapolo/Warning_string
Update Warning-strings to use a standard-format
2012-08-01 10:56:17 -07:00
Jeff Garzik 0f460644e3 Add doc/release-notes.txt, temporary for 0.7 release 2012-08-01 13:54:15 -04:00
Jeff Garzik 06e0e1c853 Merge pull request #1465 from Diapolo/NOUI_showSSLVersion
write used OpenSSL library version to debug.log
2012-08-01 10:08:45 -07:00
Jeff Garzik b5029b87c8 Merge pull request #1396 from rebroad/NoShrinkOption
Make truncating the debug.log file an option.
2012-08-01 09:41:50 -07:00
Jeff Garzik a823faecf1 Merge pull request #1344 from rebroad/AskForTimeFormat
Unless debugging, show a more useful format for the askfors
2012-08-01 09:08:00 -07:00
Jeff Garzik 0ecbd46fe7 Merge pull request #1343 from rebroad/MisbehavingDelta
Show when node is misbehaving, not just at the point that it gets banned...
2012-08-01 09:06:57 -07:00
Jeff Garzik 05a85b2b38 Add 'mempool' P2P command, and extend 'getdata' behavior
to permit downloading of mempool transactions from the remote peer.
2012-07-31 17:42:35 -04:00
Jeff Garzik fa914f1dda Merge pull request #1616 from Diapolo/OpenSSL_typo
fix OpenSSL not written as proper noun in some comments
2012-07-21 06:59:25 -07:00
Jeff Garzik e3132693fa Merge pull request #1610 from fanquake/master
Update a link to dev resources
2012-07-18 09:45:06 -07:00
Jeff Garzik 4b76541c25 Merge pull request #1609 from fanquake/master
Docs tidy up + fixes
2012-07-18 07:24:49 -07:00
Jeff Garzik 6e3a1a3742 Merge pull request #1304 from rebroad/ShowBlockTimestamp
Show block timestamp
2012-07-05 15:28:42 -07:00
Jeff Garzik 698b9f3095 bitcoinrpc.cpp: Removed outdated comment
Fixes #1373
2012-07-05 18:18:15 -04:00
Jeff Garzik b47d2bc164 Merge pull request #1554 from jgarzik/dup-gethash
Remove duplicate GetHash() in ConnectBlock
2012-07-05 10:06:55 -07:00
Jeff Garzik fe70b09c42 Merge pull request #1555 from TheBlueMatt/warnings
Fix remaining compile warnings.
2012-07-04 08:34:11 -07:00