Age | Commit message (Collapse) | Author |
|
It seems there were two mechanisms for assessing whether a CNode
was still in use: a refcount and a release timestamp. The latter
seems to have been there for a long time, as a safety mechanism.
However, this timer also keeps CNode objects alive for far longer
than necessary after disconnects, potentially opening up a DoS
window.
This commit removes the timestamp-based mechanism, and replaces
it with an assert(nRefCount >= 0), to verify that the refcounting
is indeed correctly working.
|
|
Limited mapAlreadyAskedFor
|
|
Thread / shutdown cleanup
|
|
Update transaction statistics
|
|
As these were not updated when 'backporting' the 225430 checkpoint
into head.
Additionally, also report verification progress in debug.log, and
tweak the sigcheck-verification-speed-factor a bit.
|
|
|
|
|
|
|
|
|
|
- use labelExplanation for sending and receiving tab and move the string
from the ui-file to the source
- ensure that the table holding the label and address is resized so that
the address column fits the address and the label column is stretched to
fit the window size
- rename some stuff for much easier readbility in the code (I find it hard
to get the meaning of stuff like labels or buttons)
|
|
Two reasons for this change:
1. Need to always use boost::thread's sleep, even on Windows, so the
sleeps can be interrupted (prior code used Windows' built-in Sleep).
2. I always forgot what units the old Sleep took.
|
|
Create a boost::thread_group object at the qt/bitcoind main-loop level
that will hold pointers to all the main-loop threads.
This will replace the vnThreadsRunning[] array.
For testing, ported the BitcoinMiner threads to use its
own boost::thread_group.
|
|
|
|
Bitcoin-Qt: fix opening verify message tab via main menu
|
|
- adds 6 methods in BitcoinGUI to access some actions needed by the new
WalletView class
- updates WalletView class to use these instead of trying to duplicate
these
- cleanup walletview.{cpp/h} and remove all unneeded stuff
- this fixes problems with tabs toolbar (#2451) and export broken (#2436)
- more details in #2447
|
|
|
|
Bitcoin-Qt: only use qApp for Q(Core)Application::instance()
|
|
- added new created and documented svg version of shaded icon
- changed "B" background to white (no longer transparent)
- removed PSD (Adobe Photoshop) document
- license is now MIT
Signed-off-by: Jonas Schnelli <jonas.schnelli@include7.ch>
|
|
|
|
Global cleanups
|
|
Move GenerateBitcoins() call out of net.cpp's StartNode()
|
|
|
|
- add missing initalisation for clientModel
- remove unneded RPCExecutor::start() code
|
|
Bitcoin-Qt: fix copy via context-menu broken
|
|
- also includes a small change to a string in bitcoinrpc.cpp, which is not
on Transifex anyway, so is safe to merge
|
|
- as QClipboard::Selection isn't available on Windows ensure that the
correct mode is called, but sill allow selection for e.g. X11
- start conversion from QCoreApplication::instance() to qApp in
guiutil.cpp (I intend to harmonize this all over the source with my Qt5
compatibility pull)
|
|
Simplify titles of tabs in main window
|
|
check why/preview: http://dl.dropbox.com/u/7383846/new_bitcoin_qt_mac_icon.png
- according to official bitcoin logo
- no chopped shadow
- retina-screen support
Signed-off-by: Jonas Schnelli <jonas.schnelli@include7.ch>
|
|
This will result in re-requesting invs if we are under heavy inv
load, however as long as we get no more than 16,000 invs in two
minutes, this should have no effect on runtime behavior.
|
|
|
|
This reverts commit 643160f6e7e5e8ca84bc7d2c1a0f37d9cf43a6e1.
Turns out this commit was useless after a more careful reading of
CNode::AskFor
|
|
translations update 2013-03-19 (bitcoinstrings.cpp / bitcoin_en.ts)
|
|
fix "send coins" via context menu in address book
|
|
- fix debug window, by re-adding rpcConsole->setClientModel(clientModel);
in BitcoinGUI::setClientModel(), which was removed by #2220
|
|
- the send coins context menu entry was not working anymore, because
a non current version of #2220 was merged onto current master
- also removes some unneeded spaces and adds a comment to
WalletModel::getNumTransactions()
|
|
It was needlessly confusing people, as it doesn't necessarily match the
number of transactions in the transaction list.
|
|
Tabs don't fits in line in Spanish/German/Russian when they has two words.
Wallet has limited functionality. It can send & receive coins. So we can
safely rename "Send coins" to "Send" and "Receive coins" to "Receive".
Address book is just stored addresses.
|
|
The internal miner is closely bound to the wallet engine,
not the blockchain engine.
|
|
Bitcoin-Qt: ensure createTrayIconMenu() is always called on Mac
|
|
Clean up font size in main window for observed inconsistency in Mac OS
|
|
Don't use -dbcache for BDB anymore
|
|
There exists a per-message-processed send buffer overflow protection,
where processing is halted when the send buffer is larger than the
allowed maximum.
This protection does not apply to individual items, however, and
getdata has the potential for causing large amounts of data to be
sent. In case several hundreds of blocks are requested in one getdata,
the send buffer can easily grow 50 megabytes above the send buffer
limit.
This commit breaks up the processing of getdata requests, remembering
them inside a CNode when too many are requested at once.
|
|
- this should prevent GUI issues on Mac that were observed before (disappearing
GUI - see #1522)
- the patch ensures, that createTrayIconMenu() is always called on Mac to
process and use our MacDockIconHandler
|
|
|
|
* Change CNode::vRecvMsg to be a deque instead of a vector (less copying)
* Make sure to acquire cs_vRecvMsg in CNode::CloseSocketDisconnect (as it
may be called without that lock).
|
|
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.
|
|
|
|
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)
|
|
(finally) Remove IRC Seed support now that lfnet is down.
|
|
alertnotify, so bitcoind users can get email/sms/whatever of alerts
|