From 5ae7ebc1f2b96af62b30bf8a24e9cc04881fb050 Mon Sep 17 00:00:00 2001 From: Viktor Krikun Date: Mon, 22 Feb 2010 15:13:53 +0000 Subject: [PATCH] Fix mistaken NO_ZRTP_QUICK events after Hello received (closes #20) --- include/zrtp_config_user.h | 2 +- include/zrtp_types.h | 3 +++ include/zrtp_version.h | 6 +++--- src/zrtp.c | 1 + src/zrtp_engine.c | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/include/zrtp_config_user.h b/include/zrtp_config_user.h index 660e341937..707349ed1c 100644 --- a/include/zrtp_config_user.h +++ b/include/zrtp_config_user.h @@ -129,7 +129,7 @@ * over CSD channels. This option affect enterprise version of the library only. */ #ifndef ZRTP_BUILD_FOR_CSD -#define ZRTP_BUILD_FOR_CSD 1 +#define ZRTP_BUILD_FOR_CSD 0 #endif /** diff --git a/include/zrtp_types.h b/include/zrtp_types.h index abbba0dce4..674a2c91bf 100644 --- a/include/zrtp_types.h +++ b/include/zrtp_types.h @@ -698,6 +698,9 @@ struct zrtp_stream_t */ zrtp_state_t prev_state; + /** 1 means that peer Hello have been raceived within current ZRTP session */ + uint8_t is_hello_received; + /*!< Reflects current state of ZRTP protocol */ zrtp_state_t state; diff --git a/include/zrtp_version.h b/include/zrtp_version.h index 8ddb68b193..62c6e0c49f 100644 --- a/include/zrtp_version.h +++ b/include/zrtp_version.h @@ -12,8 +12,8 @@ #define LIBZRTP_VERSION_MAJOR 1 -#define LIBZRTP_VERSION_MINOR 0 -#define LIBZRTP_VERSION_BUILD 591 -#define LIBZRTP_VERSION_STR "v1.00 590" +#define LIBZRTP_VERSION_MINOR 10 +#define LIBZRTP_VERSION_BUILD 593 +#define LIBZRTP_VERSION_STR "v1.10 593" #endif /*__ZRTP_VERSION_H__*/ diff --git a/src/zrtp.c b/src/zrtp.c index a9c583a1d8..6c5470cca8 100644 --- a/src/zrtp.c +++ b/src/zrtp.c @@ -428,6 +428,7 @@ zrtp_status_t zrtp_stream_attach(zrtp_session_t *session, zrtp_stream_t** stream new_stream->session = session; new_stream->zrtp = session->zrtp; new_stream->mitm_mode = ZRTP_MITM_MODE_UNKN; + new_stream->is_hello_received = 0; ZSTR_SET_EMPTY(new_stream->cc.hmackey); ZSTR_SET_EMPTY(new_stream->cc.peer_hmackey); diff --git a/src/zrtp_engine.c b/src/zrtp_engine.c index 35d01d84ab..07d14f185b 100644 --- a/src/zrtp_engine.c +++ b/src/zrtp_engine.c @@ -1226,6 +1226,7 @@ zrtp_status_t _zrtp_machine_process_hello(zrtp_stream_t* stream, zrtp_rtp_info_t /* Copy packet for future hashing */ zrtp_memcpy(&stream->messages.peer_hello, peer_hello, zrtp_ntoh16(peer_hello->hdr.length)*4); + stream->is_hello_received = 1; /* * Choose PK exchange scheme and PK mode. @@ -1250,7 +1251,7 @@ zrtp_status_t _zrtp_machine_process_hello(zrtp_stream_t* stream, zrtp_rtp_info_t /*---------------------------------------------------------------------------*/ static void _send_and_resend_hello(zrtp_stream_t* stream, zrtp_retry_task_t* task) { - if (task->_retrys == ZRTP_NO_ZRTP_FAST_COUNT) { + if ((task->_retrys == ZRTP_NO_ZRTP_FAST_COUNT) && !stream->is_hello_received) { ZRTP_LOG(2,(_ZTU_,"WARNING! HELLO have been resent %d times without a response." " Raising ZRTP_EVENT_NO_ZRTP_QUICK event. ID=%u\n", task->_retrys, stream->id));