mirror of https://github.com/aria2/aria2
2008-02-28 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Fixed the previous insufficient fix for possible busy loop. * src/MSEHandshake.cc (identifyHandshakeType) Removed unused functions. * src/MSEHandshake.{h, cc} (readDataAndDecrypt)pull/1/head
parent
50bb9bd36d
commit
c766d945ef
|
@ -1,3 +1,11 @@
|
||||||
|
2008-02-28 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
||||||
|
|
||||||
|
Fixed the previous insufficient fix for possible busy loop.
|
||||||
|
* src/MSEHandshake.cc (identifyHandshakeType)
|
||||||
|
|
||||||
|
Removed unused functions.
|
||||||
|
* src/MSEHandshake.{h, cc} (readDataAndDecrypt)
|
||||||
|
|
||||||
2008-02-28 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
2008-02-28 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
||||||
|
|
||||||
Fixed possible busy loop if first 20 bytes are not received for a few
|
Fixed possible busy loop if first 20 bytes are not received for a few
|
||||||
|
|
|
@ -91,9 +91,12 @@ MSEHandshake::HANDSHAKE_TYPE MSEHandshake::identifyHandshakeType()
|
||||||
if(!_socket->isReadable(0)) {
|
if(!_socket->isReadable(0)) {
|
||||||
return HANDSHAKE_NOT_YET;
|
return HANDSHAKE_NOT_YET;
|
||||||
}
|
}
|
||||||
int32_t bufLength = 20-_rbufLength;
|
int32_t r = 20-_rbufLength;
|
||||||
_socket->readData(_rbuf+_rbufLength, bufLength);
|
_socket->readData(_rbuf+_rbufLength, r);
|
||||||
_rbufLength += bufLength;
|
if(r == 0) {
|
||||||
|
throw new DlAbortEx(EX_EOF_FROM_PEER);
|
||||||
|
}
|
||||||
|
_rbufLength += r;
|
||||||
if(_rbufLength < 20) {
|
if(_rbufLength < 20) {
|
||||||
return HANDSHAKE_NOT_YET;
|
return HANDSHAKE_NOT_YET;
|
||||||
}
|
}
|
||||||
|
@ -180,16 +183,6 @@ void MSEHandshake::initCipher(const unsigned char* infoHash)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ssize_t MSEHandshake::readDataAndDecrypt(unsigned char* data, size_t length)
|
|
||||||
{
|
|
||||||
unsigned char temp[MAX_BUFFER_LENGTH];
|
|
||||||
assert(MAX_BUFFER_LENGTH >= length);
|
|
||||||
int32_t rlength = length;
|
|
||||||
_socket->readData(temp, rlength);
|
|
||||||
_decryptor->decrypt(data, rlength, temp, rlength);
|
|
||||||
return rlength;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MSEHandshake::encryptAndSendData(const unsigned char* data, size_t length)
|
void MSEHandshake::encryptAndSendData(const unsigned char* data, size_t length)
|
||||||
{
|
{
|
||||||
unsigned char temp[4096];
|
unsigned char temp[4096];
|
||||||
|
|
|
@ -102,8 +102,6 @@ private:
|
||||||
|
|
||||||
static const unsigned char VC[VC_LENGTH];
|
static const unsigned char VC[VC_LENGTH];
|
||||||
|
|
||||||
ssize_t readDataAndDecrypt(unsigned char* data, size_t length);
|
|
||||||
|
|
||||||
void encryptAndSendData(const unsigned char* data, size_t length);
|
void encryptAndSendData(const unsigned char* data, size_t length);
|
||||||
|
|
||||||
void createReq1Hash(unsigned char* md) const;
|
void createReq1Hash(unsigned char* md) const;
|
||||||
|
|
Loading…
Reference in New Issue