In response to Melinda's first reply, the reason I specifically requested an implementation in C is because I think its the language that a developer is the least likely to hang himself with. I've seen plenty of examples of bad code and I think c gives the least opportunity for a developer to make an unreadable mess. It also is a language that is in line with my general idea of coding, i.e. KISS (keep it simple stupid).
Continuing my discussion about how badly SIP is designed, I'm gonna talk about the via line. First of all each via line can be expressed as via: OR v: OR you can have multiple via entries on the same line separated by a comma where random whitespaces are allowed. Additionally, I can't understand why each line is terminated with <CR><LF>, why use two characters when one will do. I could also go into a design argument about how the same specification is used for udp as for tcp and why the idea for a stateless SIP proxy wasn't thrown out completely when writing the draft, but I'll wait on those.
Bill