You could run one of the numerous free Virtual Machine packages, Vmware Player, Sun Virtual Box, and run a Linux machine contained within your windows machine :)<br><br>Donny<br><br><div class="gmail_quote">On Thu, Jul 23, 2009 at 11:07 PM, tian <span dir="ltr">&lt;<a href="mailto:tian00di00@live.com">tian00di00@live.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I am NOT a programmer, I am even running Windows instead of Linux. I have<br>
some knowledge of C and I am reading through libss7 source code to learn<br>
about the internals of SS7 signaling. I don&#39;t know how to submit a patch but<br>
I have found a couple of errors in the libss7 source code, how can a person<br>
like me (some sort of a code reviewer but not a technician) to send<br>
feedbacks? Is there any guideline? Thanks!<br>
<br>
p.s. I believe the following libss7 code contain bugs:<br>
<br>
Version SVN<br>
SVN Trunk<br>
SVN Revision 269<br>
<br>
Source file: mtp3.c<br>
<br>
Lines: 470-476<br>
<br>
if (LINKSET_UP_DELAY &gt; -1) { // #define LINKSET_UP_DELAY 500<br>
    if (ss7-&gt;linkset_up_timer &gt; -1)<br>
        ss7_schedule_del(ss7, &amp;ss7-&gt;linkset_up_timer);<br>
    ss7-&gt;linkset_up_timer = ss7_schedule_event(ss7, LINKSET_UP_DELAY,<br>
&amp;linkset_up_expired, ss7);<br>
    ss7_message(ss7, &quot;LINKSET UP DELAYING RESETTING\n&quot;);<br>
} else // **** this clause will NEVER be excecuted!<br>
    ss7_linkset_up_event(ss7);<br>
<br>
<br>
Description of the bug: since LINKSET_UP_DELAY is #define&#39;d to be 500, the<br>
if condition is always true so the else clause will never be executed!<br>
<br>
<br>
Version SVN<br>
SVN Trunk<br>
SVN Revision 269<br>
<br>
Source file: mtp3.c<br>
<br>
Lines: 452-464<br>
<br>
/* try force uninhibit */<br>
if (i == ss7-&gt;numlinks) {<br>
    for (i = 0; i &lt; ss7-&gt;numlinks; i++) {<br>
        if (ss7-&gt;links[i]-&gt;inhibit &amp; INHIBITED_REMOTELY) {<br>
            if (!(ss7-&gt;links[i]-&gt;got_sent_netmsg &amp; SENT_LFU))<br>
                break;  // **** This break should be deleted! ****<br>
            AUTORL(rl, ss7-&gt;links[i]);<br>
            net_mng_send(ss7-&gt;links[i], NET_MNG_LFU, rl, 0);<br>
            ss7_message(ss7, &quot;Forced uninhibiting remotely inhibited link<br>
(no more signalling links are in service) SLC: %i ADJPC: %i\n&quot;,<br>
ss7-&gt;links[i]-&gt;slc, ss7-&gt;links[i]-&gt;dpc);<br>
            break;<br>
        }<br>
    }<br>
}<br>
<br>
Bug description: the first &#39;break&#39; keyword is misused and should be deleted!<br>
Apparently the logic of the program is to check whether a LFU has been sent<br>
to the far end, and if it is not the case, send a LFU, but the &#39;break&#39;<br>
breaks the logic.<br>
<br>
<br>
I have some other bugs, if positive replies are received, I am glad to<br>
report them (In the hope that installing a Linux box is not required in the<br>
process of bug reporting).<br>
<br>
Regard,<br>
<br>
Tian<br>
<br>
<br>
--------------------------------------------------<br>
From: &quot;Russell Bryant&quot; &lt;<a href="mailto:russell@digium.com">russell@digium.com</a>&gt;<br>
Sent: Friday, July 24, 2009 8:32 AM<br>
To: &quot;Asterisk Developers Mailing List&quot; &lt;<a href="mailto:asterisk-dev@lists.digium.com">asterisk-dev@lists.digium.com</a>&gt;<br>
Subject: Re: [asterisk-dev] strange libss7 coding style!<br>
<div><div></div><div class="h5"><br>
&gt; tian wrote:<br>
&gt;&gt; Hi, guys!<br>
&gt;<br>
&gt; Hi!<br>
&gt;<br>
&gt; Please create a new message instead of reply to another one when<br>
&gt; starting a new thread.<br>
&gt;<br>
&gt;&gt; suppose that A, B, C and D are some boolean expressions, the libss7 code<br>
&gt;&gt; used something like this:<br>
&gt;&gt;<br>
&gt;&gt; if (  (A &amp;&amp; B) ? 1 : (C || D)  )<br>
&gt;&gt;     // statements when condition is true<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; I think the following would be equivalent and more clean<br>
&gt;&gt;<br>
&gt;&gt; if (   (A &amp;&amp; B) || (C || D)   )<br>
&gt;&gt;     // statements when condition is true<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; I think this is strange coding style and am wondering what benefit can we<br>
&gt;&gt; get from this? Do you?<br>
&gt;<br>
&gt; Agreed.  Patches that simplify logic like this are welcome.<br>
&gt;<br>
&gt; --<br>
&gt; Russell Bryant<br>
&gt; Digium, Inc. | Engineering Manager, Open Source Software<br>
&gt; 445 Jan Davis Drive NW - Huntsville, AL 35806 - USA<br>
&gt; Check us out at: <a href="http://www.digium.com" target="_blank">www.digium.com</a> &amp; <a href="http://www.asterisk.org" target="_blank">www.asterisk.org</a><br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; --Bandwidth and Colocation Provided by <a href="http://www.api-digital.com--" target="_blank">http://www.api-digital.com--</a><br>
&gt;<br>
&gt; asterisk-dev mailing list<br>
&gt; To UNSUBSCRIBE or update options visit:<br>
&gt;   <a href="http://lists.digium.com/mailman/listinfo/asterisk-dev" target="_blank">http://lists.digium.com/mailman/listinfo/asterisk-dev</a><br>
&gt;<br>
<br>
_______________________________________________<br>
--Bandwidth and Colocation Provided by <a href="http://www.api-digital.com--" target="_blank">http://www.api-digital.com--</a><br>
<br>
asterisk-dev mailing list<br>
To UNSUBSCRIBE or update options visit:<br>
   <a href="http://lists.digium.com/mailman/listinfo/asterisk-dev" target="_blank">http://lists.digium.com/mailman/listinfo/asterisk-dev</a><br>
</div></div></blockquote></div><br>