[asterisk-dev] Strange code in chan_sip.c (1.4) sip_xmit - network retry in 1 ms on REGISTER socket failures
Klaus Darilion
klaus.mailinglists at pernau.at
Mon Sep 7 11:02:19 CDT 2009
Hi Olle!
That might be the cause of the problem I reported some time ago:
http://www.mail-archive.com/asterisk-dev@lists.digium.com/msg38618.html
regards
klaus
Olle E. Johansson schrieb:
> 1818 /*! \brief Transmit SIP message */
> 1819 static int __sip_xmit(struct sip_pvt *p, char *data, int len)
> 1820 {
> 1821 int res;
> 1822 const struct sockaddr_in *dst = sip_real_dst(p);
> 1823 res = sendto(sipsock, data, len, 0, (const struct
> sockaddr *)dst, sizeof(struct sockaddr_in)) ;
> 1824
> 1825 if (res == -1) {
> 1826 switch (errno) { 1827 case
> EBADF: /* Bad file descriptor - seems like this is
> generated when th e host exist, but doesn't accept the UDP packet
> */
> 1828 case EHOSTUNREACH: /* Host can't be
> reached */
> 1829 case ENETDOWN: /* Inteface down */
> 1830 case ENETUNREACH: /* Network failure */
> 1831 case ECONNREFUSED: /* ICMP port
> unreachable */
> 1832 res = XMIT_ERROR; /* Don't bother
> with trying to transmit again */
> 1833 }
> 1834
> 1835 if (p->registry && p->registry->regstate <
> REG_STATE_REGISTERED) {
> 1836 AST_SCHED_DEL(sched, p->registry-
> >timeout);
> 1837 p->registry->needdns = TRUE;
> 1838 p->registry->timeout =
> ast_sched_add(sched, 1, sip_reg_timeout, p->registry);
> 1839 }
> 1840 }
>
>
> Since I don't have access to svnview, it's too hard to trace when the
> lines 1835-1839 was added. Somehow it reschedules a REGISTER in the
> middle of the "send to socket" function, bypassing a lot of other code
> that handles errors on this layer. It's extremely aggressive. What
> kind of network-related errors would possibly be resolved in 1 ms and
> can't wait for normal SIP retransmit?
>
> I need to understand where this is coming from and why, since there's
> a bug report in https://issues.asterisk.org/view.php?id=15540.
>
> I think we should propably just remove it or move it somewhere else.
> For some reason, it doesn't exist at all in 1.6 or trunk.
>
> /O
>
> _______________________________________________
> --Bandwidth and Colocation Provided by http://www.api-digital.com--
>
> AstriCon 2009 - October 13 - 15 Phoenix, Arizona
> Register Now: http://www.astricon.net
>
> asterisk-dev mailing list
> To UNSUBSCRIBE or update options visit:
> http://lists.digium.com/mailman/listinfo/asterisk-dev
More information about the asterisk-dev
mailing list