summaryrefslogtreecommitdiff
path: root/channels/chan_iax2.c
diff options
context:
space:
mode:
authorMark Spencer <markster@digium.com>2005-06-13 08:48:17 +0000
committerMark Spencer <markster@digium.com>2005-06-13 08:48:17 +0000
commitfb12b92a4374ac3c82e2c24b5d3222d1e6102052 (patch)
tree896a51613790df11a7db4ee67b9ff2becbdb8040 /channels/chan_iax2.c
parentbef7d9da1667230ecb4004af32b178c67101c2fc (diff)
Various IAX2 fixes
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5901 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_iax2.c')
-rwxr-xr-xchannels/chan_iax2.c37
1 files changed, 23 insertions, 14 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 17d1f347c..5d446f4e8 100755
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -94,10 +94,11 @@ static int nochecksums = 0;
/*
* Uncomment to try experimental IAX bridge optimization,
* designed to reduce latency when IAX calls cannot
- * be trasnferred
+ * be trasnferred -- obsolete
*/
-#define BRIDGE_OPTIMIZATION
+/* #define BRIDGE_OPTIMIZATION */
+
#define PTR_TO_CALLNO(a) ((unsigned short)(unsigned long)(a))
#define CALLNO_TO_PTR(a) ((void *)(unsigned long)(a))
@@ -2319,7 +2320,7 @@ static int schedule_delivery(struct iax_frame *fr, int reallydeliver, int update
if(fr->af.frametype == AST_FRAME_VOICE) {
type = JB_TYPE_VOICE;
- len = ast_codec_get_samples(&fr->af) / 8;
+ len = ast_codec_get_samples(&fr->af) / 8;
} else if(fr->af.frametype == AST_FRAME_CNG) {
type = JB_TYPE_SILENCE;
}
@@ -2347,9 +2348,9 @@ static int schedule_delivery(struct iax_frame *fr, int reallydeliver, int update
iaxs[fr->callno]->jbid = -1;
- /* deliver this frame now */
- __do_deliver(fr);
- return 0;
+ /* deliver this frame now */
+ __do_deliver(fr);
+ return 0;
}
@@ -6249,13 +6250,17 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
forward_delivery(&fr);
} else {
duped_fr = iaxfrdup2(&fr);
- schedule_delivery(duped_fr, 1, updatehistory, 1);
- fr.ts = duped_fr->ts;
+ if (duped_fr) {
+ schedule_delivery(duped_fr, 1, updatehistory, 1);
+ fr.ts = duped_fr->ts;
+ }
}
#else
duped_fr = iaxfrdup2(&fr);
- schedule_delivery(duped_fr, 1, updatehistory, 1);
- fr.ts = duped_fr->ts;
+ if (duped_fr) {
+ schedule_delivery(duped_fr, 1, updatehistory, 1);
+ fr.ts = duped_fr->ts;
+ }
#endif
if (iaxs[fr.callno]->last < fr.ts) {
iaxs[fr.callno]->last = fr.ts;
@@ -7413,13 +7418,17 @@ retryowner2:
forward_delivery(&fr);
} else {
duped_fr = iaxfrdup2(&fr);
- schedule_delivery(duped_fr, 1, updatehistory, 0);
- fr.ts = duped_fr->ts;
+ if (duped_fr) {
+ schedule_delivery(duped_fr, 1, updatehistory, 0);
+ fr.ts = duped_fr->ts;
+ }
}
#else
duped_fr = iaxfrdup2(&fr);
- schedule_delivery(duped_fr, 1, updatehistory, 0);
- fr.ts = duped_fr->ts;
+ if (duped_fr) {
+ schedule_delivery(duped_fr, 1, updatehistory, 0);
+ fr.ts = duped_fr->ts;
+ }
#endif
if (iaxs[fr.callno]->last < fr.ts) {