plugin_fix_fbox_anoncall: improved matching and rewriting (="fixing") Contact header on anonymous calls.

This commit is contained in:
Thomas Ries 2016-02-24 19:14:23 +00:00
parent cfff86c65f
commit a89bf08c66
3 changed files with 21 additions and 5 deletions

View File

@ -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.

View File

@ -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;

View File

@ -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 "