diff options
Diffstat (limited to 'src/PeerInteractionCommand.cc')
| -rw-r--r-- | src/PeerInteractionCommand.cc | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/PeerInteractionCommand.cc b/src/PeerInteractionCommand.cc index 2788026b..1b529264 100644 --- a/src/PeerInteractionCommand.cc +++ b/src/PeerInteractionCommand.cc @@ -60,17 +60,19 @@ PeerInteractionCommand::~PeerInteractionCommand() { } bool PeerInteractionCommand::executeInternal() { - if(sequence == INITIATOR_SEND_HANDSHAKE) { - socket->setBlockingMode(); - setReadCheckSocket(socket); - setTimeout(e->option->getAsInt(PREF_TIMEOUT)); - } disableWriteCheckSocket(); setUploadLimitCheck(false); setNoCheck(false); switch(sequence) { case INITIATOR_SEND_HANDSHAKE: + if(!socket->isWritable(0)) { + setWriteCheckSocket(socket); + break; + } + socket->setBlockingMode(); + setReadCheckSocket(socket); + setTimeout(e->option->getAsInt(PREF_TIMEOUT)); peerInteraction->sendHandshake(); sequence = INITIATOR_WAIT_HANDSHAKE; break; |
