hello,
i found that FS doesn't transparently map Diversion header from INVITE to 300|302 message in a case of diversion.
i have changed mod_sofia.c to adjust this:
char *added_headers = sofia_glue_get_extra_headers(channel, SOFIA_SIP_HEADER_PREFIX);
--- 2026,2037 ----
if (argc > 1) {
nua_respond(tech_pvt->nh, SIP_300_MULTIPLE_CHOICES, SIPTAG_CONTACT_STR(dest),
! TAG_IF(!zstr(extra_headers), SIPTAG_HEADER_STR(extra_headers)),
! TAG_IF(!zstr(added_headers), SIPTAG_HEADER_STR(added_headers)), TAG_END());
} else {
nua_respond(tech_pvt->nh, SIP_302_MOVED_TEMPORARILY, SIPTAG_CONTACT_STR(dest),
! TAG_IF(!zstr(extra_headers), SIPTAG_HEADER_STR(extra_headers)),
! TAG_IF(!zstr(added_headers), SIPTAG_HEADER_STR(added_headers)), TAG_END());
}
Now 300|302 message contains the original header that was present in INVITE.
since i didn't get any response whether this is a "feature" or a bug ... i went into the code and changed it myself.
Please check the patch attached and see if it is possible/feasible/acceptable merge it into FS trunk.
Regards,
Tihomir.
BTW: macros are cool while bringing headache in the same time :=)