Just preset IA to PeerConnection in receiver side.

Since initiator cannot send payload stream before reading step2 from
receiver, mseHandshake_->getBufferLength() should be 0.
pull/1/head
Tatsuhiro Tsujikawa 2011-01-08 22:58:44 +09:00
parent 320ca4c5a1
commit 1818f2ed55
1 changed files with 4 additions and 13 deletions

View File

@ -213,19 +213,10 @@ void ReceiverMSEHandshakeCommand::createCommand()
peerConnection->enableEncryption(mseHandshake_->getEncryptor(),
mseHandshake_->getDecryptor());
}
size_t buflen = mseHandshake_->getIALength()+mseHandshake_->getBufferLength();
array_ptr<unsigned char> buffer(new unsigned char[buflen]);
memcpy(buffer, mseHandshake_->getIA(), mseHandshake_->getIALength());
if(mseHandshake_->getNegotiatedCryptoType() == MSEHandshake::CRYPTO_ARC4) {
mseHandshake_->getDecryptor()->decrypt(buffer+mseHandshake_->getIALength(),
mseHandshake_->getBufferLength(),
mseHandshake_->getBuffer(),
mseHandshake_->getBufferLength());
} else {
memcpy(buffer+mseHandshake_->getIALength(),
mseHandshake_->getBuffer(), mseHandshake_->getBufferLength());
}
peerConnection->presetBuffer(buffer, buflen);
// Since initiator cannot send payload stream before reading step2
// from receiver, mseHandshake_->getBufferLength() should be 0.
peerConnection->presetBuffer(mseHandshake_->getIA(),
mseHandshake_->getIALength());
// TODO add mseHandshake_->getInfoHash() to PeerReceiveHandshakeCommand
// as a hint. If this info hash and one in BitTorrent Handshake does not
// match, then drop connection.