Avoid core dump if rpc port is in use.

The cleanup code needs to check for NULL rpcworkers thread group.

Rebased-from: b7f6e156462a24129078252a4e957a5be622ebcc 0.8.x
Bugfix: Avoid trying to parse outputs that aren't relevant to CWalletTx::GetAmounts

This fixes a warning when an output we aren't concerned with can't be parsed.

Rebased-from: a8c1df93c87f089bfb80d959724a65b714b2aaca 0.8.x
Bugfix: Supress "address" key in transaction details, when the destination isn't recognized

Previously, it would pass corrupt/random through base58.

Rebased-from: 33a3cfaf0fe7ab8f23b815e678fe72f2a95fb61f 0.8.x
RPC: prevent crash with walletpassphrase

- fix crash with walletpassphrase by checking if RPC server is running and
  give a friendly error message how to fix this (fixes #3100)
- add 3 new RPCErrorCodes RPC_SERVER_NOT_STARTED
- use the new code where needed / missing

Upstream: 4315ec1a722a290ba2bb2b86080a787f6174e2a2

Conflicts:
	src/rpcnet.cpp
	src/rpcwallet.cpp

Rebased-from: a80b01cdf6323dae55020933ad1f5ea52f64b0bc 0.8.x
bitcoingui: show main window (if hidden) on modal messages

Conflicts:
	src/qt/bitcoingui.cpp

Conflicts:
	src/qt/bitcoingui.cpp

Rebased-from: ad47c2848db573ea6656bbc16bd49000166dfd16 0.8.x

Conflicts:
	src/qt/bitcoingui.cpp
Bug fix: CDataStream::GetAndClear() when nReadPos > 0

Changed CDataStream::GetAndClear() to use the most obvious
get get and clear instead of a tricky swap().

Added a unit test for CDataStream insert/erase/GetAndClear.

Note: GetAndClear() is not performance critical, it is used only
by the send-a-message-to-the-network code. Bug was not noticed
before now because the send-a-message code never erased from the
stream.

Rebased-from: b56b10252f8f5374cbe750178e57460b4aeaeeef 0.8.x
Show short scriptPubKeys correctly

Previously bitcoin-qt's -debug transaction info was showing CTxOut([error])

It is valid for a scriptPubKey to be any size, for example simply
OP_RETURN is valid and can be used to destroy a TXOUT to mining fees.

Conflicts:
    src/core.cpp

Rebased-from: 5d37b9db291cf60d3a1b4a15d00ef00baa7d9f4e 0.8.x
qt: add license header to source files

Closes #839

Conflicts:
	src/qt/addressbookpage.cpp
	src/qt/guiutil.cpp
	src/qt/intro.cpp
	src/qt/intro.h
	src/qt/macnotificationhandler.h
	src/qt/optionsdialog.cpp
	src/qt/optionsmodel.cpp
	src/qt/paymentrequestplus.cpp
	src/qt/paymentrequestplus.h
	src/qt/paymentserver.cpp
	src/qt/receivecoinsdialog.cpp
	src/qt/receivecoinsdialog.h
	src/qt/receiverequestdialog.cpp
	src/qt/receiverequestdialog.h
	src/qt/trafficgraphwidget.cpp
	src/qt/trafficgraphwidget.h
	src/qt/walletmodeltransaction.cpp
	src/qt/walletmodeltransaction.h

Rebased-from: c70289eefe66f72cb3133ff603c808b700cbae5f 0.8.x
doc: replace DOS with MSYS shell to be more consistent

A plain DOS window doesn't have the right path settings, whereas
the MSYS shell window does.

Conflicts:
    doc/build-msw.md

Rebased-from: 51e3e0909eb8567cde3fe1be0badbc266cb4cc6a 0.8.x
Partial: Sanitize assert usage and refuse to compile with NDEBUG.

There were quite a few places where assert() was used with side effects,
 making operation with NDEBUG non-functional.  This commit fixes all the
 cases I know about, but also adds an  #error on NDEBUG because the code
 is untested without assertions and may still have vulnerabilities if
 used without assert.

Conflicts:
	src/key.cpp
	src/main.cpp
	src/wallet.cpp

Rebased-from: 2e0c4da3fb1ce78dca1b3db723cf095a94f2f371 0.8.x
Rebranding
Explicitly ensure that wallet is unlocked in `importprivkey`

This makes for a more useful error reply (fixes #957).

Rebased-from: 4175de73d954a02c9f57f603e63e0d688ddfeed2 0.8.x
Don't create empty transactions when reading corrupted wallet

The current transaction loading code is not exception safe.
An exception during deserialization causes an empty transaction
to be left behind in the wallet.

Fix this by building the transaction separately and adding
it only to the wallet at the end.

Fixes #3333.

Rebased-from: 3127d6caf46e2e96fc701b2d44ca28c4b9d7717a 0.8.x
Bugfix: Undefine _FORTIFY_SOURCE before redefining it, to avoid warnings on compilers that define it by default

Rebased-from: 2b5514138ab0b4e7fd1cbebe77852d41d09ca38d 0.8.x
qt: Fix richtext detection hang issue on very old Qt versions

Alternative implementation. Thanks to @awoland for the original.
Fixes #3486.

Rebased-from: 90a28680bd8b24800428b301f7bf6cbf534de2ca 0.8.x
Add check for valid keys in `importprivkey`

The base58 armoring was checked, but not the resulting private key,
which could be out of range. Fix this by adding a check.

Conflicts:
	src/rpcdump.cpp

Conflicts:
	src/rpcdump.cpp

Rebased-from: b403ab80ab39d41a6f965479cdf878cd8e58a399 0.8.x
Fix `getaddednodeinfo` RPC call with dns=false

The getaddednodeinfo RPC call, when invoked with the dns flag set to
false, returns a malformed JSON object with duplicate keys.

Change this to return an array of objects with one key as
shown in the help message.

Fixes #3581.

Rebased-from: a41825be5762ff36dcf0d89c20b95572af30c6bb 0.8.x
Add option to avoid spending unconfirmed change

Conflicts:
	src/init.cpp
	src/wallet.cpp
	src/wallet.h

Rebased-from: 86d40cab2725e758f4ddaf1e1149f0ab897df110 0.8.x
[raw] reject insanely high fees by default in sendrawtransaction

There have been several incidents where mainnet experimentation with
 raw transactions  resulted in insane fees.  This is hard to prevent
 in the raw transaction api because the inputs may not be known.
 Since sending doesn't work if the inputs aren't known, we can catch
 it there.

This rejects fees > than 10000 * nMinRelayTxFee or 1 BTC with the
 defaults and can be overridden with a bool at the rpc.

Conflicts:
	src/main.cpp
	src/main.h
	src/rpcrawtransaction.cpp

Rebased-from: 6349de20f90f046aefa9eaae0de8e3faf11527fa 0.8.x
qt: add missing cs_wallet lock in AddressTableModel::setData

duplicate check in AddressTableModel::setData accesses
wallet data structure as well as SetAddressBook without proper LOCK, fix this.

Conflicts:
	src/qt/addresstablemodel.cpp

Rebased-from: 72378a3b67c559310f8047a622ee109850f80e59 0.8.x