Contact Header Missing - Way Forward?
I've run into the issue with osmo-sip-connector where the SIP Contact header is missing on the SIP INVITE.
I can see a PR from matt9j that manually added the Contact header into the SIP INVITE which was later reverted with a preference to fix the Sofia UAC library to populate the Contact header correctly rather than hacking it into the INVITE, and I can see lynxis opened an issue opened on the FreeSWITCH / SIP Sofia Repo to report the problem.
Sadly it looks like no fixes on the Sofia side to add the Contact correctly in the UAC library.
If I add back in the hack to add the SIP Contact header manually, everything works OK - but I'm guessing this isn't the best option, hence that commit getting reverted.
So what is everyone else doing to handle this? Is there a branch of sofia-sip somewhere that does not have this issue I should be using? Is there something else I'm missing here? Or is just adding in the Contact header into src/sip.c the best way to go for now?
Updated by laforge about 2 years ago
some other folks have worked around this by adding the contact header only if the sofia-sip version is >= a certain version.
This could be an acceptable workaround, if upstream doens't have any intrest in fixing their regression. They've meanwhile tagged new releases which likely still expose that regression.
Updated by lynxis almost 2 years ago
IMHO: libsofia is lost if nobody else is doing a fork. We should move to a different library.
I'm fine in doing the workaround but unsure how stable the sip-connector will be with current libsofia versions.
Some background about my opinion on libsofia. The freeswitch people used to have a fork of libsofia in-tree as hard copy in the freeswitch VCS. After years of keeping it in this way they split libsofia off without cleaning any version history.
Also there are a lot of commits without out any proper commit messages and doing multiple commits with the same commit message. (e.g. Fix FS-2342). While "FS" means a reference to the deprecated jira ticket system.
They also fixed bugs of freeswitch in libsofia without describing the real background and why this commit fixed the issue. Without knowing any background the commit doesn't look related and seems to fix it on the wrong end.
Exactly one of those commits broke libsofia for us.