aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorPieter Wuille <[email protected]>2012-04-17 18:50:45 +0200
committerPieter Wuille <[email protected]>2012-04-17 18:50:52 +0200
commitc581cc16bb5e490c0960ccf440de2d1e5f23c417 (patch)
treee4cdaab6e956b05be9c103de92ea2b996d177575 /src/main.cpp
parentMerge pull request #1092 from laanwj/2012_04_sendcoins_setlabelfix (diff)
downloaddiscoin-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.cpp4
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;