Update of /usr/cvsroot/asterisk/channels
In directory mongoose.digium.com:/tmp/cvs-serv743/channels

Modified Files:
        chan_iax2.c iax2-parser.c 
Log Message:
Various IAX2 fixes


Index: chan_iax2.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_iax2.c,v
retrieving revision 1.307
retrieving revision 1.308
diff -u -d -r1.307 -r1.308
--- chan_iax2.c 9 Jun 2005 21:11:30 -0000       1.307
+++ chan_iax2.c 13 Jun 2005 08:48:17 -0000      1.308
@@ -94,10 +94,11 @@
 /*
  * 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 @@
 
        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 @@
 
                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 @@
                                                                                
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 @@
                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) {

Index: iax2-parser.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/iax2-parser.c,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -d -r1.46 -r1.47
--- iax2-parser.c       6 Jun 2005 22:12:19 -0000       1.46
+++ iax2-parser.c       13 Jun 2005 08:48:17 -0000      1.47
@@ -880,7 +880,7 @@
        if (fr->af.datalen) {
 #if __BYTE_ORDER == __LITTLE_ENDIAN
                /* We need to byte-swap slinear samples from network byte order 
*/
-               if (fr->af.subclass == AST_FORMAT_SLINEAR) {
+               if ((fr->af.frametype == AST_FRAME_VOICE) && (fr->af.subclass 
== AST_FORMAT_SLINEAR)) {
                        ast_swapcopy_samples(fr->af.data, f->data, 
fr->af.samples);
                } else
 #endif

_______________________________________________
Asterisk-Cvs mailing list
[email protected]
http://lists.digium.com/mailman/listinfo/asterisk-cvs

Reply via email to