[svn-commits] pcadach: trunk r44187 - in /trunk: ./
channels/chan_h323.c
svn-commits at lists.digium.com
svn-commits at lists.digium.com
Mon Oct 2 11:57:50 MST 2006
Author: pcadach
Date: Mon Oct 2 13:57:49 2006
New Revision: 44187
URL: http://svn.digium.com/view/asterisk?rev=44187&view=rev
Log:
Merged revisions 44166 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r44166 | pcadach | 2006-10-02 23:15:11 +0600 (Пнд, 02 Окт 2006) | 1 line
Optimization of oh323_indicate(): less locks - less problems, plus single exit point
........
Modified:
trunk/ (props changed)
trunk/channels/chan_h323.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Modified: trunk/channels/chan_h323.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_h323.c?rev=44187&r1=44186&r2=44187&view=diff
==============================================================================
--- trunk/channels/chan_h323.c (original)
+++ trunk/channels/chan_h323.c Mon Oct 2 13:57:49 2006
@@ -873,6 +873,8 @@
got_progress = pvt->got_progress;
if (condition == AST_CONTROL_PROGRESS)
pvt->got_progress = 1;
+ else if ((condition == AST_CONTROL_BUSY) || (condition == AST_CONTROL_CONGESTION))
+ pvt->alreadygone = 1;
ast_mutex_unlock(&pvt->lock);
if (h323debug)
@@ -883,72 +885,51 @@
if (c->_state == AST_STATE_RING || c->_state == AST_STATE_RINGING) {
h323_send_alerting(token);
res = (got_progress ? 0 : -1); /* Do not simulate any audio tones if we got PROGRESS message */
- break;
- }
- if (token)
- free(token);
- return -1;
+ }
+ break;
case AST_CONTROL_PROGRESS:
if (c->_state != AST_STATE_UP) {
/* Do not send PROGRESS message more than once */
if (!got_progress)
h323_send_progress(token);
- break;
- }
- if (token)
- free(token);
- return -1;
+ res = 0;
+ }
+ break;
case AST_CONTROL_BUSY:
if (c->_state != AST_STATE_UP) {
h323_answering_call(token, 1);
- ast_mutex_lock(&pvt->lock);
- pvt->alreadygone = 1;
- ast_mutex_unlock(&pvt->lock);
ast_softhangup_nolock(c, AST_SOFTHANGUP_DEV);
- break;
- }
- if (token)
- free(token);
- return -1;
+ res = 0;
+ }
+ break;
case AST_CONTROL_CONGESTION:
if (c->_state != AST_STATE_UP) {
h323_answering_call(token, 1);
- ast_mutex_lock(&pvt->lock);
- pvt->alreadygone = 1;
- ast_mutex_unlock(&pvt->lock);
ast_softhangup_nolock(c, AST_SOFTHANGUP_DEV);
- break;
- }
- if (token)
- free(token);
- return -1;
+ res = 0;
+ }
+ break;
case AST_CONTROL_HOLD:
h323_hold_call(token, 1);
/* We should start MOH only if remote party isn't provide audio for us */
ast_moh_start(c, data, NULL);
- if (token)
- free(token);
- return 0;
+ res = 0;
+ break;
case AST_CONTROL_UNHOLD:
h323_hold_call(token, 0);
ast_moh_stop(c);
- if (token)
- free(token);
- return 0;
+ res = 0;
+ break;
case AST_CONTROL_PROCEEDING:
case -1:
- if (token)
- free(token);
- return -1;
+ break;
default:
- ast_log(LOG_WARNING, "Don't know how to indicate condition %d on %s\n", condition, token);
- if (token)
- free(token);
- return -1;
+ ast_log(LOG_WARNING, "OH323: Don't know how to indicate condition %d on %s\n", condition, token);
+ break;
}
if (h323debug)
- ast_log(LOG_DEBUG, "OH323: Indicated %d on %s\n", condition, token);
+ ast_log(LOG_DEBUG, "OH323: Indicated %d on %s, res=%d\n", condition, token, res);
if (token)
free(token);
oh323_update_info(c);
More information about the svn-commits
mailing list