summaryrefslogtreecommitdiff
path: root/src/PeerInteractionCommand.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/PeerInteractionCommand.cc')
-rw-r--r--src/PeerInteractionCommand.cc12
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;