partysip-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Partysip-dev] Call setup problems


From: Aymeric Moizard
Subject: Re: [Partysip-dev] Call setup problems
Date: Wed, 23 Apr 2003 18:36:57 +0200 (CEST)


On Wed, 23 Apr 2003, Marian Durkovic wrote:

> Hi Aymeric,
>
>   thanks for the fast reply!
>
> Yes, I've tried to use record-routing and unfortunately it opens some other
> problems.... I'm already balancing on a very thin ice, since translators
> between H323 and SIP bring a lot of fun.
>
> Since we're not living in a perfect world, wouldn't it be
> possible to have some option like "workaround_for_broken_clients"
> which will allow to pass the ACKs  through?

If you assume the request-uri contains the correct host destination,
then the fix is quite easy... I think this is the case that will
happen most of the time. Who knows?

By the way, here is a quick fix:

              OSIP_TRACE (osip_trace
                          (__FILE__, __LINE__, OSIP_INFO1, NULL,
                           "core module: This is a late ACK to
discard!\n"));
              /* It can be a ACK for 200 ok, but those ACK SHOULD
                 never go through this proxy! (and should be sent to the
                 contact header of the 200ok */
#define SUPPORT_FOR_BROKEN_UA
#ifdef SUPPORT_FOR_BROKEN_UA
              /* if this ACK has a request-uri that is not us,
                 forward the message there. How should I modify this
                 message?? */

              if (evt!=NULL
                  && evt->sip!=NULL
                  && evt->sip->strtline!=NULL
                  && evt->sip->strtline->rquri!=NULL)
                {
                  if
(psp_core_is_responsible_for_this_domain(evt->sip->strtline->rquri)!=0)
                    {
                      int port = 5060;
                      if (evt->sip->strtline->rquri->port != NULL)
                        port = satoi (evt->sip->strtline->rquri->port);
                      psp_core_cb_snd_message(NULL, evt->sip,

evt->sip->strtline->rquri->host,
                                              port, -1);
                    }
                }
#endif
              msg_free (evt->sip);
              sfree (evt->sip);
              sfree (evt);
              return 0;
            }

It's in the CVS.

The above fix will lead to weird behavior:
 * when receiving late ACK for response other than 2xx
 * when the request-uri does not contains an IP. (you an improve it!)
 * not usefull when the ACK contains a uri pointing to the partysip.

Let me know if this helps you.
Aymeric

>       Thanks,
>
>               M.
>
>
>
> > I don't like them :)
> >
> > > - for example sip-h323
> > > translators, which only talk to the nearest sip proxy and thus are sending
> > > the ACKs after 200 OK to them as well. Also some UAs do it like this.
> > > When partysip drops the ACK, the call could not be established.
> >
> > The rfc does not allow this behavior and mandates to use the
> > record-routing mechanism.
> >
> > There is actually one way to deal with this issue: configure partysip to
> > do "record-routing". This way evry SIP messages will go through the proxy
> > and partysip will handle them correctly. (because of the presence of
> > the Route header). (Note that MSN reply with an error when receiving
> > calls from a proxy that does record-routing and which conforms to
> > the latest rfc... It's not partysip's fault again!)
> >
> > To enable record-routing, you have to modify **evrywhere** in the config
> > file lines. (it appears more than once)
> >
> >   record-route off
> > in
> >   record-route on
> >
> > Aymeric
>







reply via email to

[Prev in Thread] Current Thread [Next in Thread]