Posted: Mon Sep 22, 2003 6:18 am Post subject: [Asterisk-cvs] asterisk/channels chan_h323.c,1.3,1.4
Update of /usr/cvsroot/asterisk/channels
In directory mongoose.digium.com:/tmp/cvs-serv31123
Modified Files:
chan_h323.c
Log Message:
rollback transfer support...not properly implemented
Index: chan_h323.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_h323.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- chan_h323.c 6 Sep 2003 20:29:25 -0000 1.3
+++ chan_h323.c 22 Sep 2003 06:20:01 -0000 1.4
@@ -232,6 +232,8 @@
strncpy(user->context, v->value, sizeof(user->context)-1);
} else if (!strcasecmp(v->name, "bridge")) {
user->bridge = ast_true(v->value);
+ } else if (!strcasecmp(v->name, "nat")) {
+ user->nat = ast_true(v->value);
} else if (!strcasecmp(v->name, "noFastStart")) {
user->noFastStart = ast_true(v->value);
} else if (!strcasecmp(v->name, "noH245Tunneling")) {
@@ -497,6 +499,14 @@
/* Retrieve audio/etc from channel. Assumes p->lock is already held. */
struct ast_frame *f;
static struct ast_frame null_frame = { AST_FRAME_NULL, };
+
+ /* Only apply it for the first packet, we just need the correct ip/port */
+ if(p->nat)
+ {
+ ast_rtp_setnat(p->rtp,p->nat);
+ p->nat = 0;
+ }
+
f = ast_rtp_read(p->rtp);
/* Don't send RFC2833 if we're not supposed to */
if (f && (f->frametype == AST_FRAME_DTMF) && !(p->dtmfmode & H323_DTMF_RFC2833))
@@ -1031,6 +1041,7 @@
}
strncpy(p->context, user->context, sizeof(p->context)-1);
p->bridge = user->bridge;
+ p->nat = user->nat;
if (strlen(user->callerid))
strncpy(p->callerid, user->callerid, sizeof(p->callerid) - 1);
@@ -1056,9 +1067,7 @@
/* I know this is horrid, don't kill me saddam */
exit:
/* allocate a channel and tell asterisk about it */
- printf("exten b4: %s\n", p->exten);
c = oh323_new(p, AST_STATE_RINGING, cd.call_token);
-
if (!c) {
ast_log(LOG_ERROR, "Couldn't create channel. This is bad\n");
return 0;
@@ -1089,61 +1098,6 @@
}
#endif
-
-/* Call-back function that gets called on transfer
- *
- * Returns 1 on success
- */
-int setup_transfer_call(unsigned call_reference, const char *extension)
-{
- struct oh323_pvt *p;
- struct ast_channel *c = NULL;
- char exten[AST_MAX_EXTENSION];
- char *context;
-
- p = find_call(call_reference);
-
- if (!p) {
- ast_log(LOG_WARNING, "No such call %d.\n", call_reference);
- return -1;
- }
-
- if (!p->owner) {
- ast_log(LOG_WARNING, "Call %d has no owner.\n", call_reference);
- return -1;
- }
-
- memcpy(exten, extension, sizeof(exten));
-
- c = p->owner;
- if (c && c->bridge) {
- strncpy(exten, extension, sizeof(exten) - 1);
- context = strchr(exten, '@');
- if (context) {
- *context = '\0';
- context++;
- } else
- context = c->context;
- if (!strlen(context))
- context = c->bridge->context;
- if (ast_exists_extension(c->bridge, context, exten, 1, c->bridge->callerid)) {
-
- ast_log(LOG_NOTICE, "Transfering call %s to %s@%s.\n", c->bridge->name, exten, context);
-
- if (!ast_async_goto(c->bridge, context, exten, 1, 1))
- return 1;
-
- ast_log(LOG_WARNING, "Failed to transfer.\n");
- } else {
- ast_log(LOG_WARNING, "No such extension '%s' exists.\n", exten);
- }
- } else {
- ast_log(LOG_WARNING, "There is no call to transfer\n");
- }
- return 0;
-}
-
-
/**
* Call-back function that gets called for each rtp channel opened
*
@@ -1768,8 +1722,7 @@
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum