[Asterisk-Dev] Re: Asterisk-Dev digest, Vol 1 #199 - 1 msg

Jose Ildefonso Camargo Tolosa icamargo at unet.edu.ve
Tue Jul 29 06:22:25 MST 2003


Ok, I'll comment.

>From: "Sergey S. Stasyuk" <stas at onlineua.net>
>To: asterisk-dev at lists.digium.com
>Date: 22 Jul 2003 21:08:03 +0300
>Subject: [Asterisk-Dev] chan_sip.c patch
>Reply-To: asterisk-dev at lists.digium.com
>Hi all!
>I have already written that there are some problems with chan sip on my
>machine. Problem is because of incorrect copy of bindaddr to __ourip
>instead of bindaddr.sin_addr. I wonder why this problems are only on my

I have had some weird problems with SIP too, but I had not time to take 
a look at it.

I also had problems with alsa, with version 0.9.4. I made a patch, and 
send it to Mark, no answer this far.  I have noticed in the style of 
programming that they often use the value of a constant instead of the 
constant's name, and sometimes they do the same with data types.

I made some comments on the patch.

>I awfully sorry of reposting same message, but would be at least any
>comments on this diff?
>Best regards,
>Sergey Stasyuk
>================== Cut here ==============================
>diff -u -r1.132 chan_sip.c
>--- chan_sip.c  17 Jul 2003 18:49:05 -0000      1.132
>+++ chan_sip.c  22 Jul 2003 18:26:24 -0000
>@@ -456,7 +456,7 @@
>        pkt->seqno = seqno;
>        pkt->resp = resp;
>        /* Schedule retransmission */
>-       pkt->retransid = ast_sched_add(sched, 1000, retrans_pkt, pkt);
>+       pkt->retransid = ast_sched_add(sched, DEFAULT_RETRANS,
>retrans_pkt, pkt);

The typical "use value instead of constant's name".

>        pkt->next = p->packets;
>        p->packets = pkt;
>        __sip_xmit(pkt->owner, pkt->data, pkt->packetlen);
>@@ -5512,7 +5512,7 @@
>        }
>        if (ntohl(bindaddr.sin_addr.s_addr)) {
>-               memcpy(&__ourip, &bindaddr, sizeof(__ourip));
>+               memcpy(&__ourip, &bindaddr.sin_addr, sizeof(__ourip));

The problem can be the ordening of data members on the structure, the 
"-" line copy the first sizeof(__ourip) bytes from binaddr, wich happend 
to be sin_addr in almost every system, maybe in yours the ordening is 
different, your patch make it independent of the position of the 
sin_addr member inside the structure.

>        } else {
>                hp = gethostbyname(ourhost);
>                if (!hp) {

Hope this help,


Ildefonso Camargo
Network Administrator - UNET
icamargo at unet.edu.ve
ildefonso_camargo at yahoo.com

More information about the asterisk-dev mailing list