|
|
@ -94,10 +94,11 @@ static int nochecksums = 0;
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
* Uncomment to try experimental IAX bridge optimization,
|
|
|
|
* Uncomment to try experimental IAX bridge optimization,
|
|
|
|
* designed to reduce latency when IAX calls cannot
|
|
|
|
* 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 PTR_TO_CALLNO(a) ((unsigned short)(unsigned long)(a))
|
|
|
|
#define CALLNO_TO_PTR(a) ((void *)(unsigned long)(a))
|
|
|
|
#define CALLNO_TO_PTR(a) ((void *)(unsigned long)(a))
|
|
|
@ -6249,13 +6250,17 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
|
|
|
|
forward_delivery(&fr);
|
|
|
|
forward_delivery(&fr);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
duped_fr = iaxfrdup2(&fr);
|
|
|
|
duped_fr = iaxfrdup2(&fr);
|
|
|
|
|
|
|
|
if (duped_fr) {
|
|
|
|
schedule_delivery(duped_fr, 1, updatehistory, 1);
|
|
|
|
schedule_delivery(duped_fr, 1, updatehistory, 1);
|
|
|
|
fr.ts = duped_fr->ts;
|
|
|
|
fr.ts = duped_fr->ts;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
#else
|
|
|
|
#else
|
|
|
|
duped_fr = iaxfrdup2(&fr);
|
|
|
|
duped_fr = iaxfrdup2(&fr);
|
|
|
|
|
|
|
|
if (duped_fr) {
|
|
|
|
schedule_delivery(duped_fr, 1, updatehistory, 1);
|
|
|
|
schedule_delivery(duped_fr, 1, updatehistory, 1);
|
|
|
|
fr.ts = duped_fr->ts;
|
|
|
|
fr.ts = duped_fr->ts;
|
|
|
|
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
if (iaxs[fr.callno]->last < fr.ts) {
|
|
|
|
if (iaxs[fr.callno]->last < fr.ts) {
|
|
|
|
iaxs[fr.callno]->last = fr.ts;
|
|
|
|
iaxs[fr.callno]->last = fr.ts;
|
|
|
@ -7413,13 +7418,17 @@ retryowner2:
|
|
|
|
forward_delivery(&fr);
|
|
|
|
forward_delivery(&fr);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
duped_fr = iaxfrdup2(&fr);
|
|
|
|
duped_fr = iaxfrdup2(&fr);
|
|
|
|
|
|
|
|
if (duped_fr) {
|
|
|
|
schedule_delivery(duped_fr, 1, updatehistory, 0);
|
|
|
|
schedule_delivery(duped_fr, 1, updatehistory, 0);
|
|
|
|
fr.ts = duped_fr->ts;
|
|
|
|
fr.ts = duped_fr->ts;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
#else
|
|
|
|
#else
|
|
|
|
duped_fr = iaxfrdup2(&fr);
|
|
|
|
duped_fr = iaxfrdup2(&fr);
|
|
|
|
|
|
|
|
if (duped_fr) {
|
|
|
|
schedule_delivery(duped_fr, 1, updatehistory, 0);
|
|
|
|
schedule_delivery(duped_fr, 1, updatehistory, 0);
|
|
|
|
fr.ts = duped_fr->ts;
|
|
|
|
fr.ts = duped_fr->ts;
|
|
|
|
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
if (iaxs[fr.callno]->last < fr.ts) {
|
|
|
|
if (iaxs[fr.callno]->last < fr.ts) {
|
|
|
|