plugin_fix_fbox_anoncall: improved matching and rewriting (="fixing") Contact header on anonymous calls.
This commit is contained in:
parent
cfff86c65f
commit
a89bf08c66
@ -1,5 +1,7 @@
|
|||||||
0.8.2
|
0.8.2
|
||||||
=====
|
=====
|
||||||
|
24-Feb-2016: - plugin_fix_fbox_anoncall: improved matching and rewriting
|
||||||
|
(="fixing") Contact header on anonymous calls.
|
||||||
30-Jan-2016: - added plugin_fix_fbox_anoncall: a plugin to work around
|
30-Jan-2016: - added plugin_fix_fbox_anoncall: a plugin to work around
|
||||||
some quirks from Fritzboxes when receiving anonymous calls
|
some quirks from Fritzboxes when receiving anonymous calls
|
||||||
(calls with supressed CLID). Might also work for other UAs.
|
(calls with supressed CLID). Might also work for other UAs.
|
||||||
|
|||||||
@ -158,9 +158,6 @@ int PLUGIN_PROCESS(int stage, sip_ticket_t *ticket){
|
|||||||
|
|
||||||
/* loop through urlmap table */
|
/* loop through urlmap table */
|
||||||
for (idx=0; idx<URLMAP_SIZE; idx++){
|
for (idx=0; idx<URLMAP_SIZE; idx++){
|
||||||
user_match=0;
|
|
||||||
param_match=0;
|
|
||||||
|
|
||||||
if (urlmap[idx].active == 0) continue;
|
if (urlmap[idx].active == 0) continue;
|
||||||
if (urlmap[idx].true_url == NULL) continue;
|
if (urlmap[idx].true_url == NULL) continue;
|
||||||
|
|
||||||
|
|||||||
@ -1023,6 +1023,8 @@ int sip_find_direction(sip_ticket_t *ticket, int *urlidx) {
|
|||||||
|
|
||||||
ticket->direction = DIRTYP_UNKNOWN;
|
ticket->direction = DIRTYP_UNKNOWN;
|
||||||
|
|
||||||
|
DEBUGC(DBCLASS_SIP, "sip_find_direction: beginning search");
|
||||||
|
|
||||||
/* Search order is as follows:
|
/* Search order is as follows:
|
||||||
* - "from" IP address is one of our registered local UAs
|
* - "from" IP address is one of our registered local UAs
|
||||||
* => OUTGOING
|
* => OUTGOING
|
||||||
@ -1063,6 +1065,9 @@ int sip_find_direction(sip_ticket_t *ticket, int *urlidx) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (type == DIRTYP_UNKNOWN) {
|
||||||
|
DEBUGC(DBCLASS_SIP, "sip_find_direction: no OUTGOING found");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1105,6 +1110,9 @@ int sip_find_direction(sip_ticket_t *ticket, int *urlidx) {
|
|||||||
} /* is request */
|
} /* is request */
|
||||||
} /* for i */
|
} /* for i */
|
||||||
} /* if type == DIRTYP_UNKNOWN */
|
} /* if type == DIRTYP_UNKNOWN */
|
||||||
|
if (type == DIRTYP_UNKNOWN) {
|
||||||
|
DEBUGC(DBCLASS_SIP, "sip_find_direction: no INCOMING (To:) found");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1124,6 +1132,9 @@ int sip_find_direction(sip_ticket_t *ticket, int *urlidx) {
|
|||||||
}
|
}
|
||||||
} /* for i */
|
} /* for i */
|
||||||
} /* if type == DIRTYP_UNKNOWN */
|
} /* if type == DIRTYP_UNKNOWN */
|
||||||
|
if (type == DIRTYP_UNKNOWN) {
|
||||||
|
DEBUGC(DBCLASS_SIP, "sip_find_direction: no INCOMING RQ (SIP URI) found");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* &&&& Open Issue &&&&
|
/* &&&& Open Issue &&&&
|
||||||
@ -1131,7 +1142,7 @@ int sip_find_direction(sip_ticket_t *ticket, int *urlidx) {
|
|||||||
* (e.g 1393xxx@proxy01.sipphone.com for calls made sipphone -> FWD)
|
* (e.g 1393xxx@proxy01.sipphone.com for calls made sipphone -> FWD)
|
||||||
* How can we deal with this? Should I take into consideration the 'Via'
|
* How can we deal with this? Should I take into consideration the 'Via'
|
||||||
* headers? This is the only clue I have, pointing to the *real* UA.
|
* headers? This is the only clue I have, pointing to the *real* UA.
|
||||||
* Maybe I should put in a 'siproxd' ftag value to recognize it as a header
|
* Maybe I should put in a 'siproxd' flag value to recognize it as a header
|
||||||
* inserted by myself
|
* inserted by myself
|
||||||
*/
|
*/
|
||||||
if ((type == DIRTYP_UNKNOWN) &&
|
if ((type == DIRTYP_UNKNOWN) &&
|
||||||
@ -1194,6 +1205,9 @@ int sip_find_direction(sip_ticket_t *ticket, int *urlidx) {
|
|||||||
}
|
}
|
||||||
} /* is response */
|
} /* is response */
|
||||||
} /* if type == DIRTYP_UNKNOWN */
|
} /* if type == DIRTYP_UNKNOWN */
|
||||||
|
if (type == DIRTYP_UNKNOWN) {
|
||||||
|
DEBUGC(DBCLASS_SIP, "sip_find_direction: no INCOMING RS (via header) found");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1219,7 +1233,10 @@ int sip_find_direction(sip_ticket_t *ticket, int *urlidx) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} /* if type == DIRTYP_UNKNOWN */
|
} /* if type == DIRTYP_UNKNOWN */
|
||||||
|
if (type == DIRTYP_UNKNOWN) {
|
||||||
|
DEBUGC(DBCLASS_SIP, "sip_find_direction: no INCOMING (redirected) found");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (type == DIRTYP_UNKNOWN) {
|
if (type == DIRTYP_UNKNOWN) {
|
||||||
DEBUGC(DBCLASS_SIP, "sip_find_direction: unable to determine "
|
DEBUGC(DBCLASS_SIP, "sip_find_direction: unable to determine "
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user