<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal>Hello all,<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Has anyone have magicjack working with their asterisk? I had
patched chan_sip.c with some code that allows asterisk to do the md5 hash that
mjmd5 proxy does. * shows that it is registered with magicjack, but incoming
calls are not even hitting my * box and outgoing calls get congestion. Here is
my relevant configs. I did do a ton of google searching, but it all points to
it should work. And I am stuck. I know my existing dial plan internally works,
as it already works with my GV and ipkall. Any links or suggestions would be
greatly appreciated.<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Thanks.<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>A little snip of sip show peers<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>magicjack/Exxxxxxxxxx01&nbsp;&nbsp;&nbsp;
67.91.177.70&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
5070&nbsp;&nbsp;&nbsp;&nbsp; OK (55 ms)<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>I get this in the CLI<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp; -- Executing
[12486323130@home-sip-int-in:1] Dial(&quot;SIP/jjonesip-00000006&quot;,
&quot;SIP/xxxxxxxxxxx@magicjack,30,r&quot;) in new stack<o:p></o:p></p>

<p class=MsoNormal>&nbsp; == Using SIP RTP CoS mark 5<o:p></o:p></p>

<p class=MsoNormal>&nbsp; == Using UDPTL CoS mark 5<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp; -- Called xxxxxxxxxxx@magicjack<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp; -- Got SIP response 480 &quot;Temporarily
Unavailable&quot; back from 67.91.177.70<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp; -- SIP/magicjack-00000007 is circuit-busy<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Sip.conf<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>[general]<o:p></o:p></p>

<p class=MsoNormal>useragent=MagicJack/2.0.554f (SJ
Labs)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
; incase they look at the UA of sip client<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>register =&gt;
Exxxxxxxxxx01:xxxxxxxxxxxxxxxxxxx@proxy1.detroit.talk4free.com:5070/1100@home-sip-int-in<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>[magicjack]<o:p></o:p></p>

<p class=MsoNormal>context=home-sip-int-in<o:p></o:p></p>

<p class=MsoNormal>username=Exxxxxxxxxx01<o:p></o:p></p>

<p class=MsoNormal>authuser=Exxxxxxxxxx01<o:p></o:p></p>

<p class=MsoNormal>type=friend<o:p></o:p></p>

<p class=MsoNormal>secret=xxxxxxxxxxxxxxxxxxxx<o:p></o:p></p>

<p class=MsoNormal>port=5070<o:p></o:p></p>

<p class=MsoNormal>nat=no<o:p></o:p></p>

<p class=MsoNormal>insecure=port,invite<o:p></o:p></p>

<p class=MsoNormal>;host=67.106.133.198 ; idk was in a howto<o:p></o:p></p>

<p class=MsoNormal>host=proxy1.detroit.talk4free.com<o:p></o:p></p>

<p class=MsoNormal>;host=67.91.177.70 ; detroit proxy<o:p></o:p></p>

<p class=MsoNormal>;host=vms03.detroit.talk4free.com<o:p></o:p></p>

<p class=MsoNormal>;host=67.91.177.77 ; vms03.detroitproxy<o:p></o:p></p>

<p class=MsoNormal>useragent=MagicJack/2.0.554f (SJ Labs)<o:p></o:p></p>

<p class=MsoNormal>fromuser=Exxxxxxxxxx01<o:p></o:p></p>

<p class=MsoNormal>fromdomain=talk4free.com<o:p></o:p></p>

<p class=MsoNormal>dtmfmode=rfc2833<o:p></o:p></p>

<p class=MsoNormal>;dtmfmode=inband<o:p></o:p></p>

<p class=MsoNormal>qualify=2000<o:p></o:p></p>

<p class=MsoNormal>canreinvite=no<o:p></o:p></p>

<p class=MsoNormal>disallow=all<o:p></o:p></p>

<p class=MsoNormal>allow=ulaw<o:p></o:p></p>

<p class=MsoNormal>t38pt_udptl = no<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>And the code I used to patch chan_sip.c<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>--- old/channels/chan_sip.c&nbsp;&nbsp;&nbsp;
&nbsp;2009-08-13 10:24:40.000000000 -0700<o:p></o:p></p>

<p class=MsoNormal>+++ new/channels/chan_sip.c&nbsp;&nbsp;&nbsp;&nbsp;
2009-08-22 13:47:29.000000000 -0700<o:p></o:p></p>

<p class=MsoNormal>@@ -8535,6 +8535,32 @@<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ast_md5_hash(a2_hash, a2);<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
snprintf(resp, sizeof(resp), &quot;%s:%s:%s&quot;, a1_hash, usednonce,
a2_hash);<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ast_md5_hash(resp_hash, resp);<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* To a Magicjack
domain */<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (strstr(uri,&quot;talk4free.com&quot;))<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
char callid[256];<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
char newnonce[256];<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
char *c;<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int i;<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ast_copy_string(callid, p-&gt;callid, sizeof(callid));<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ast_copy_string(newnonce, p-&gt;nonce, sizeof(newnonce));<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
strcat(newnonce, &quot;_&quot;);<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
c = newnonce + strlen(newnonce);<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char
hex[2];<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
hex[1] = 0;<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (i = 0; i &lt; 8; i++) {<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
hex[0] = newnonce[i];<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int x = strtol(hex, NULL, 16);<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*c++ = callid[x];<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*c++ = 0;<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
snprintf(resp,sizeof(resp),&quot;%s:%s:%s&quot;, a1_hash, newnonce, a2_hash);<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ast_md5_hash(resp_hash, resp);<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; good_response =
keys[K_RESP].s &amp;&amp;<o:p></o:p></p>

<p class=MsoNormal>@@ -11658,6 +11684,31 @@<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
snprintf(resp,sizeof(resp),&quot;%s:%s:%s&quot;, a1_hash, p-&gt;nonce,
a2_hash);<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ast_md5_hash(resp_hash, resp);<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* To a Magicjack
domain */<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
(strstr(uri,&quot;talk4free.com&quot;))<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
char callid[256];<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char
newnonce[256];<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
char *c;<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int i;<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ast_copy_string(callid, p-&gt;callid, sizeof(callid));<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ast_copy_string(newnonce, p-&gt;nonce, sizeof(newnonce));<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
strcat(newnonce, &quot;_&quot;);<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
c = newnonce + strlen(newnonce);<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
char hex[2];<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
hex[1] = 0;<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (i = 0; i &lt; 8; i++) {<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
hex[0] = newnonce[i];<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;int x = strtol(hex, NULL, 16);<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*c++ = callid[x];<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*c++ = 0;<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
snprintf(resp,sizeof(resp),&quot;%s:%s:%s&quot;, a1_hash, newnonce, a2_hash);<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ast_md5_hash(resp_hash, resp);<o:p></o:p></p>

<p class=MsoNormal>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* only include
the opaque string if it's set */<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
(!ast_strlen_zero(p-&gt;opaque)) {<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
snprintf(opaque, sizeof(opaque), &quot;, opaque=\&quot;%s\&quot;&quot;,
p-&gt;opaque);<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

</body>

</html>