Another great thing is that you appear to have exposed your ad hoc SIP parser as a module, which means it could potentially be imported and used in other tools.

There didn't seem to be many SIP parsers when I looked when I chose C instead of Go to use libosip2 which is very, very mature. 

Looking forward to trying this in my GitHub Actions as I was about to plumb in SIPp scenarios:

https://github.com/SentryPeer/SentryPeer/actions

I also looked at Rust SIP crates, not many either... 

Nice work. 

Thanks, 
Gavin.