<div><div>static int</div><div>WriteN(RTMP *r, const char *buffer, int n)</div><div>{</div><div>  const char *ptr = buffer;</div><div>#ifdef CRYPTO</div><div>  char *encrypted = 0;</div><div>  char buf[RTMP_BUFFER_CACHE_SIZE];</div>
<div><br></div><div>  if (r->Link.rc4keyOut)</div><div>    {</div><div>      if (n > sizeof(buf))</div><div><span class="" style="white-space:pre"> </span>encrypted = (char *)malloc(n);</div><div>      else</div><div>
<span class="" style="white-space:pre">       </span>encrypted = (char *)buf;</div><div>      ptr = encrypted;</div><div>      RC4_encrypt2(r->Link.rc4keyOut, n, buffer, ptr);</div><div>    }</div><div>#endif</div><div><br></div>
<div>  while (n > 0)</div><div>    {</div><div>      int nBytes;</div><div><br></div><div>      if (r->Link.protocol & RTMP_FEATURE_HTTP)</div><div>        nBytes = HTTP_Post(r, RTMPT_SEND, ptr, n);</div><div>      else</div>
<div>        nBytes = RTMPSockBuf_Send(&r->m_sb, ptr, n);</div><div>      /*RTMP_Log(RTMP_LOGDEBUG, "%s: %d\n", __FUNCTION__, nBytes); */</div><div><br></div><div>      if (nBytes < 0)</div><div><span class="" style="white-space:pre">    </span>{</div>
<div><span class="" style="white-space:pre">    </span>  int sockerr = GetSockError();</div><div><span class="" style="white-space:pre">    </span>  RTMP_Log(RTMP_LOGERROR, "%s, RTMP send error %d (%d bytes)", __FUNCTION__,</div>
<div><span class="" style="white-space:pre">    </span>      sockerr, n);</div><div><br></div><div><span class="" style="white-space:pre">        </span>  if (sockerr == EINTR && !RTMP_ctrlC)</div><div><span class="" style="white-space:pre">     </span>    continue;</div>
<div><br></div><div><span class="" style="white-space:pre">   </span>  RTMP_Close(r);</div><div><span class="" style="white-space:pre">   </span>  n = 1;</div><div><span class="" style="white-space:pre">   </span>  break;</div>
<div><span class="" style="white-space:pre">    </span>}</div><div><br></div><div>      if (nBytes == 0)</div><div><span class="" style="white-space:pre">    </span>break;</div><div><br></div><div>      n -= nBytes;</div><div>      ptr += nBytes;</div>
<div>    }</div><div><br></div><div>#ifdef CRYPTO</div><div>  if (encrypted && encrypted != buf)</div><div>    free(encrypted);</div><div>#endif</div><div><br></div><div>  return n == 0;</div><div>}</div></div><div>
<br></div><div>I think you need to initialize your key when you call the following encryption function, but you didn't, which leads to my error.</div><div>RC4_encrypt2(r->Link.rc4keyOut, n, buffer, ptr);<br></div><div class="gmail_extra">
<br><div class="gmail_quote">2012/11/27 Xspeed <span dir="ltr"><<a href="mailto:xspeed1989@gmail.com" target="_blank">xspeed1989@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class="gmail_extra">Actually the program is not using the library I compiled, but the one that exists in system<div class="im"><br><br><div class="gmail_quote">2012/11/27 Steven Penny <span dir="ltr"><<a href="mailto:svnpenn@gmail.com" target="_blank">svnpenn@gmail.com</a>></span><br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>Ok I'll bite. You say only success on Ubuntu, yet you have shown a working<br>

command / output from working command. I will be skeptical until I see this.</div></blockquote></div><br></div></div>
</blockquote></div><br></div>