WebRTC DTLS-SRTP OpenSSL Sunucu Tokalaşma Başarısızlık
SSL Başlatma Bölüm ve BIO değişkenler, OpenSSL Sunucusu Modunda benim prosedürdür
int ServerModeDTLSNegotiation(int iChannel, const char *pBuff, const int iLen, int iFd)
{
SSL *pServSslFd;
BIO *pRbio;
BIO *pWbio;
pServSslFd = &m_SSLMap[iFd];
pRbio = &m_BioReadMap[iFd];
pWbio = &m_BioWriteMap[iFd];
char buff[4096];
memset(buff, 0, strlen(buff));
BIO_write(pRbio, pBuff, iLen);
if(!SSL_is_init_finished(pServSslFd))
{
int iRet = SSL_do_handshake(pServSslFd);
}
int iNewLen = BIO_read(pWbio, buff, 2048);
if(iNewLen>0)
{
char *pNewData = new char[iNewLen+1];
for(int i=0;i<iNewLen;i++)
pNewData[i] = buff[i];
m_pEventHandler->SendReply(iChannel, (unsigned char *)pNewData, iNewLen);
}
else
{
printf("[DTLS]:: HandShaking Response failed for this data,
return -1;
}
return NEGOTIATION_SUCCESS;
}
: DTLS veri sunucusuna geldiğinde İşte
Ben konu hakkında daha iyi izlenmesi için Wireshark TCP-dökümü ekleme.
https://www.dropbox.com/s/quidcs6gilnvt2o/WebRTC%20DTLS%20Handshake%20Failure.pcapng?dl=0
Şimdi, SSL_CTX değişkenin benim başlatma konusunda emin değilim. Çünkü, Bazen Handshake her liman için başarılı bir şekilde pazarlık yapıyor. Ancak bazen bir veya iki port için Handshake başarısız olur. Google Chrome için WebRTC DTLS Sunucusu Modu Müzakere çözmek için 5 gün çalışıyorum. Fakat bu sorunun kök nedenini bulamadım.
Aslında bunu uzun zaman önce çözdüm. Ve evet, haklısın. Bu sorunu muteks kilit ekleyerek çözdüm. – RajibTheKing