[Serdev] Fix for registrar module in ser-0.9.3 when no expires
header exists
Jan Janak
jan at iptel.org
Fri Jun 24 11:10:16 UTC 2005
Evan,
does the problem persist ? Can you reproduce it ? If so, could you
generate a coredump and send it to me (along with compiled sources) ?
Jan.
On 16-06-2005 16:12, Evan Borgström wrote:
>
> Actually scratch that. After 3 days of this not crashing I just got
> the client to crash the proxy again (of course right after I sent this). I
> guess I'll need to dig a little deeper. I was hoping it would be nice
> and easy, back to re-compiling with memory debugging on ;)
>
> FYI, here's the message that did it (IP's changed & Auth header removed).
>
> #
> U 2005/06/16 16:08:19.936258 1.2.3.4:9404 -> 2.3.4.5:5060
> REGISTER sip:ca.mci.com;transport=udp SIP/2.0.
> To: Evan Borgstrom<sip:evanb at ca.mci.com>.
> From: Evan Borgstrom<sip:evanb at ca.mci.com>;tag=485a6c68.
> Via: SIP/2.0/UDP
> 142.77.11.120:9404;branch=z9hG4bK-d87543-581252137-1--d87543-;rport.
> Call-ID: 4a5c921cef51cd5e.
> CSeq: 3 REGISTER.
> Contact: <sip:evanb at 1.2.3.4:9404;transport=udp>;expires=0.
> Max-Forwards: 70.
> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE,
> SUBSCRIBE, INFO.
> User-Agent: MCI eyeBeam release 9100a stamp 17191.
> Authorization: Digest ...
> Content-Length: 0.
>
>
> -Evan
>
>
> Evan Borgström wrote:
> >
> > Attached is a fix for the registrar module that fixes REGISTER
> >packets meant to de-register but that contain only an ;expires tag in
> >the contact and no Expires: header.
> >
> > When clients would send a REGISTER packet without the Expires header
> >but that had an ;expires=0 in the contact list SER would crash and
> >eventually put a "BUG: qm_free" message to the debug logs then exit.
> >
> >
> >-Evan
> >
> >
> >------------------------------------------------------------------------
> >
> >--- ser-0.9.3.orig/modules/registrar/sip_msg.c 2005-06-14
> >11:47:34.000000000 -0400
> >+++ ser-0.9.3/modules/registrar/sip_msg.c 2005-06-14
> >11:56:39.000000000 -0400
> >@@ -98,10 +98,14 @@
> > return -4;
> > }
> >
> >- if (_m->expires && !_m->expires->parsed &&
> >(parse_expires(_m->expires) < 0)) {
> >- rerrno = R_PARSE_EXP;
> >- LOG(L_ERR, "parse_message(): Error while parsing expires
> >body\n");
> >- return -5;
> >+ if (_m->expires) {
> >+ if (!_m->expires->parsed && (parse_expires(_m->expires) <
> >0)) {
> >+ rerrno = R_PARSE_EXP;
> >+ LOG(L_ERR, "parse_message(): Error while parsing
> >expires body\n");
> >+ return -5;
> >+ }
> >+ } else {
> >+ _m->expires = 0;
> > }
> >
> > if (_m->contact) {
> >
> >
> >------------------------------------------------------------------------
> >
> >_______________________________________________
> >Serdev mailing list
> >serdev at lists.iptel.org
> >http://lists.iptel.org/mailman/listinfo/serdev
>
> _______________________________________________
> Serdev mailing list
> serdev at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serdev
More information about the Serdev
mailing list