diff options
| author | Pieter Wuille <[email protected]> | 2012-04-17 18:50:45 +0200 |
|---|---|---|
| committer | Pieter Wuille <[email protected]> | 2012-04-17 18:50:52 +0200 |
| commit | c581cc16bb5e490c0960ccf440de2d1e5f23c417 (patch) | |
| tree | e4cdaab6e956b05be9c103de92ea2b996d177575 /src/main.cpp | |
| parent | Merge pull request #1092 from laanwj/2012_04_sendcoins_setlabelfix (diff) | |
| download | discoin-c581cc16bb5e490c0960ccf440de2d1e5f23c417.tar.xz discoin-c581cc16bb5e490c0960ccf440de2d1e5f23c417.zip | |
Fix potential deadlock
Conflict:
* cs_main in ProcessMessages() (before calling ProcessMessages)
* cs_vSend in CNode::BeginMessage
versus:
* cs_vSend in ThreadMessageHandler2 (before calling SendMessages)
* cs_main in SendMessages
Even though cs_vSend is a try_lock, if it succeeds simultaneously with
the locking of cs_main in ProcessMessages(), it could cause a deadlock.
Diffstat (limited to 'src/main.cpp')
| -rw-r--r-- | src/main.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/main.cpp b/src/main.cpp index f2932804e..3396fe191 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2807,8 +2807,8 @@ bool ProcessMessages(CNode* pfrom) bool SendMessages(CNode* pto, bool fSendTrickle) { - { - LOCK(cs_main); + TRY_LOCK(cs_main, lockMain); + if (lockMain) { // Don't send anything until we get their version message if (pto->nVersion == 0) return true; |