Skip to content

Commit 79dab5a

Browse files
committed
fixed:stun bind reply addr is incorrect
fixed:sometimes av packet buffer is leak
1 parent 771b30b commit 79dab5a

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientWebRtc.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,13 @@ bool PullStream_ClientProtocol_Handle(LPCXSTR lpszClientAddr, XSOCKET hSocket, L
6868
ModuleSession_PullStream_RTCGet(tszUserStr, NULL, NULL, tszICEPass);
6969

7070
NatProtocol_StunNat_BuildAttr(tszRVBuffer, &nRVLen, RFCCOMPONENTS_NATCLIENT_PROTOCOL_STUN_ATTR_USERNAME, tszUserStr, _tcsxlen(tszUserStr));
71-
NatProtocol_StunNat_BuildMapAddress(tszRVBuffer + nRVLen, &nRVLen, st_ServiceConfig.tszIPAddr, st_ServiceConfig.nRTCPort, true);
71+
72+
int nPort = 0;
73+
XCHAR tszIPPort[128] = {};
74+
_tcsxcpy(tszIPPort, lpszClientAddr);
75+
BaseLib_OperatorIPAddr_SegAddr(tszIPPort, &nPort);
76+
77+
NatProtocol_StunNat_BuildMapAddress(tszRVBuffer + nRVLen, &nRVLen, tszIPPort, nPort, true);
7278
NatProtocol_StunNat_BuildMSGIntegrity(tszRVBuffer + nRVLen, &nRVLen, tszRVBuffer, nRVLen, tszICEPass);
7379

7480
nRVLen += 8; //Finger 消息先加

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,8 @@ bool XEngine_AVPacket_AVHdr(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n
179179
int nPos = 0;
180180
int nSPSLen = 0;
181181
int nPPSLen = 0;
182-
XBYTE uszSPSBuffer[512];
183-
XBYTE uszPPSBuffer[512];
182+
XBYTE uszSPSBuffer[1024];
183+
XBYTE uszPPSBuffer[1024];
184184

185185
memset(uszSPSBuffer, '\0', sizeof(uszSPSBuffer));
186186
memset(uszPPSBuffer, '\0', sizeof(uszPPSBuffer));
@@ -238,8 +238,8 @@ bool XEngine_AVPacket_AVHdr(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n
238238
int nPos = 0;
239239
int nSPSLen = 0;
240240
int nPPSLen = 0;
241-
XBYTE uszSPSBuffer[512];
242-
XBYTE uszPPSBuffer[512];
241+
XBYTE uszSPSBuffer[1024];
242+
XBYTE uszPPSBuffer[1024];
243243

244244
memset(uszSPSBuffer, '\0', sizeof(uszSPSBuffer));
245245
memset(uszPPSBuffer, '\0', sizeof(uszPPSBuffer));
@@ -292,11 +292,6 @@ bool XEngine_AVPacket_AVFrame(XCHAR* ptszSDBuffer, int* pInt_SDLen, XCHAR* ptszR
292292
if (1 == byAVType && nMsgLen > 1024)
293293
{
294294
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("检测到推流:%s 过大的音频包:%d"), lpszClientAddr, nMsgLen);
295-
for (int i = 0; i < nMsgLen; i++)
296-
{
297-
printf("%02X ", (XBYTE)lpszMsgBuffer[i]);
298-
}
299-
printf("\n");
300295
}
301296
XBYTE byFrameType = 0;
302297
if (0 == byAVType)
@@ -408,14 +403,13 @@ bool XEngine_AVPacket_AVFrame(XCHAR* ptszSDBuffer, int* pInt_SDLen, XCHAR* ptszR
408403
}
409404
else
410405
{
411-
XCHAR byAACBuffer[2048] = {};
412406
XENGINE_PROTOCOL_AVINFO st_AVInfo = {};
413407

414408
ModuleSession_PushStream_GetAVInfo(lpszClientAddr, &st_AVInfo);
415-
AVHelp_Packet_AACHdr((XBYTE*)byAACBuffer, st_AVInfo.st_AudioInfo.nSampleRate, st_AVInfo.st_AudioInfo.nChannel, nMsgLen);
416-
memcpy(byAACBuffer + 7, lpszMsgBuffer, nMsgLen);
409+
AVHelp_Packet_AACHdr((XBYTE*)ptszRVBuffer, st_AVInfo.st_AudioInfo.nSampleRate, st_AVInfo.st_AudioInfo.nChannel, nMsgLen);
410+
memcpy(ptszRVBuffer + 7, lpszMsgBuffer, nMsgLen);
417411
nMsgLen += 7;
418-
HLSProtocol_TSPacket_AVPacket(lpszClientAddr, (XBYTE*)ptszSDBuffer, pInt_SDLen, 0x101, byAACBuffer, nMsgLen);
412+
HLSProtocol_TSPacket_AVPacket(lpszClientAddr, (XBYTE*)ptszSDBuffer, pInt_SDLen, 0x101, ptszRVBuffer, nMsgLen);
419413
}
420414

421415
int nPATLen = 0;

0 commit comments

Comments
 (0)