From 42cb459cce528419d7227f45b544a697961c5edc Mon Sep 17 00:00:00 2001 From: Jeremy McNamara Date: Thu, 11 Nov 2004 19:51:55 +0000 Subject: copy over username to create a proper called addr git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4206 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_h323.c | 49 ++++++++++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 21 deletions(-) (limited to 'channels') diff --git a/channels/chan_h323.c b/channels/chan_h323.c index b20799459..8d8390d4b 100755 --- a/channels/chan_h323.c +++ b/channels/chan_h323.c @@ -433,28 +433,35 @@ static int oh323_digit(struct ast_channel *c, char digit) * Returns -1 on error, 0 on success. */ static int oh323_call(struct ast_channel *c, char *dest, int timeout) -{ - int res = 0; - struct oh323_pvt *pvt = (struct oh323_pvt *)c->pvt->pvt; - char called_addr[INET_ADDRSTRLEN]; - - if ((c->_state != AST_STATE_DOWN) && (c->_state != AST_STATE_RESERVED)) { - ast_log(LOG_WARNING, "Line is already in use (%s)\n", c->name); - return -1; - } - /* Clear and then set the address to call */ - memset(called_addr, 0, sizeof(called_addr)); - if (usingGk) { - memcpy(called_addr, dest, strlen(called_addr)); - pvt->options.noFastStart = noFastStart; - pvt->options.noH245Tunneling = noH245Tunneling; - pvt->options.noSilenceSuppression = noSilenceSuppression; - pvt->options.port = h323_signalling_port; - } else { - ast_inet_ntoa(called_addr, sizeof(called_addr), pvt->sa.sin_addr); - pvt->options.port = htons(pvt->sa.sin_port); +{ + int res = 0; + struct oh323_pvt *pvt = (struct oh323_pvt *)c->pvt->pvt; + char addr[INET_ADDRSTRLEN]; + char called_addr[INET_ADDRSTRLEN]; + + ast_log(LOG_DEBUG, "Dest is %s\n", dest); + + if ((c->_state != AST_STATE_DOWN) && (c->_state != AST_STATE_RESERVED)) { + ast_log(LOG_WARNING, "Line is already in use (%s)\n", c->name); + return -1; + } + /* Clear and then set the address to call */ + memset(addr, 0, sizeof(addr)); + if (usingGk) { + memcpy(addr, dest, strlen(addr)); + pvt->options.noFastStart = noFastStart; + pvt->options.noH245Tunneling = noH245Tunneling; + pvt->options.noSilenceSuppression = noSilenceSuppression; + pvt->options.port = h323_signalling_port; + } else { + ast_inet_ntoa(addr, sizeof(addr), pvt->sa.sin_addr); + pvt->options.port = htons(pvt->sa.sin_port); + } + if (pvt->username) { + sprintf(called_addr, "%s:%s", pvt->username, addr); + } else { + memcpy(called_addr, addr, strlen(called_addr)); } - /* indicate that this is an outgoing call */ pvt->outgoing = 1; ast_log(LOG_DEBUG, "Placing outgoing call to %s:%d\n", called_addr, pvt->options.port); res = h323_make_call(called_addr, &(pvt->cd), pvt->options); -- cgit v1.2.3