Libjingle另一个很隐藏但却很致命的错误 - WSAECONNRESET (10054) Connection reset by peer.
无论Libjingle 0.4.0还是0.5.2 (相比较0.4.0有很大改动), 有一个很隐藏却很致命的错误. 这个错误会导致voice call的时候只能听到一方的声音.
fix方法:
physicalsocketserver.cc
1.
#ifdef WIN32
#define WIN32_LEAN_AND_MEAN
[AddMyChange]
#define SIO_UDP_CONNRESET _WSAIOW(IOC_VENDOR,12)
...
2.
// Creates the underlying OS socket (same as the "socket" function).
virtual bool Create(int type) {
Close();
s_ = ::socket(AF_INET, type, 0);
[AddMyChange]
#ifdef WIN32
DWORD dwBytesReturned = 0;
BOOL bNewBehavior = FALSE;
DWORD status;
// disable new behavior using
// IOCTL: SIO_UDP_CONNRESET
status = WSAIoctl(s_, SIO_UDP_CONNRESET,
&bNewBehavior, sizeof(bNewBehavior),
NULL, 0, &dwBytesReturned,
NULL, NULL);
#endif
...
加了上面的修改, 终于完美实现Windows下Libjingle ( 0.4.0或0.5.2) + Linphone的语音通信. 1 楼 sheldordor 2011-08-01 楼主,为啥我按照你说的加了,还是会收到"ortp-warning-Error receiving RTCP packet: Connection reset by peer.",而且声音断断续续的。您知道为什么吗?