aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_h323.c
diff options
context:
space:
mode:
authorjeremy <jeremy@f38db490-d61c-443f-a65b-d21fe96a405b>2004-11-11 19:51:55 +0000
committerjeremy <jeremy@f38db490-d61c-443f-a65b-d21fe96a405b>2004-11-11 19:51:55 +0000
commited4539593669330ab1c6142f696f54fd804de856 (patch)
treedb6c47f4339be52a7f1999e3ab3ef0447f9860b8 /channels/chan_h323.c
parent168e94e59bfffbb6f3839dde717c59d80366f931 (diff)
copy over username to create a proper called addr
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@4206 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_h323.c')
-rwxr-xr-xchannels/chan_h323.c49
1 files changed, 28 insertions, 21 deletions
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);