diff options
author | Mark Spencer <markster@digium.com> | 2005-06-13 08:48:17 +0000 |
---|---|---|
committer | Mark Spencer <markster@digium.com> | 2005-06-13 08:48:17 +0000 |
commit | fb12b92a4374ac3c82e2c24b5d3222d1e6102052 (patch) | |
tree | 896a51613790df11a7db4ee67b9ff2becbdb8040 /channels/chan_iax2.c | |
parent | bef7d9da1667230ecb4004af32b178c67101c2fc (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-x | channels/chan_iax2.c | 37 |
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) { |