From 8518da7193f0f68f88a227c132362ecd92512270 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Wed, 29 Oct 2008 20:06:44 +0000 Subject: [PATCH] #1389 test #2 --- libtransmission/handshake.c | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/libtransmission/handshake.c b/libtransmission/handshake.c index 9b47f6fcc..574c88a92 100644 --- a/libtransmission/handshake.c +++ b/libtransmission/handshake.c @@ -927,7 +927,7 @@ readIA( tr_handshake * handshake, struct evbuffer * inbuf ) { int i; - const size_t needlen = handshake->ia_len; + const size_t needlen = handshake->ia_len + HANDSHAKE_SIZE; struct evbuffer * outbuf; uint32_t crypto_select; @@ -1064,24 +1064,14 @@ canRead( struct bufferevent * evin, assert( 0 ); } - switch( handshake->state ) - { - case AWAITING_PAD_C: - readyForMore = EVBUFFER_LENGTH( inbuf ) >= handshake->pad_c_len; - break; - - case AWAITING_PAD_D: - readyForMore = EVBUFFER_LENGTH( inbuf ) >= handshake->pad_d_len; - break; - - case AWAITING_IA: - readyForMore = EVBUFFER_LENGTH( inbuf ) >= handshake->ia_len; - break; - - default: - readyForMore = ret == READ_NOW; - break; - } + if( ret != READ_NOW ) + readyForMore = FALSE; + else if( handshake->state == AWAITING_PAD_C ) + readyForMore = EVBUFFER_LENGTH( inbuf ) >= handshake->pad_c_len; + else if( handshake->state == AWAITING_PAD_D ) + readyForMore = EVBUFFER_LENGTH( inbuf ) >= handshake->pad_d_len; + else if( handshake->state == AWAITING_IA ) + readyForMore = EVBUFFER_LENGTH( inbuf ) >= handshake->ia_len; } return ret;