mirror of
https://github.com/moonlight-stream/Internet-Hosting-Tool.git
synced 2026-06-18 14:41:04 +00:00
Handle large SSDP responses better
This commit is contained in:
+7
-2
@@ -70,12 +70,17 @@ struct UPNPDev* getUPnPDevicesByAddress(IN_ADDR address)
|
|||||||
u_long mode = 1;
|
u_long mode = 1;
|
||||||
ioctlsocket(s, FIONBIO, &mode);
|
ioctlsocket(s, FIONBIO, &mode);
|
||||||
|
|
||||||
char responseBuffer[1024];
|
char responseBuffer[2048];
|
||||||
struct UPNPDev* deviceList = nullptr;
|
struct UPNPDev* deviceList = nullptr;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
int bytesRead = recv(s, responseBuffer, sizeof(responseBuffer) - 1, 0);
|
int bytesRead = recv(s, responseBuffer, sizeof(responseBuffer) - 1, 0);
|
||||||
if (bytesRead == SOCKET_ERROR) {
|
if (bytesRead == SOCKET_ERROR) {
|
||||||
if (WSAGetLastError() != WSAEWOULDBLOCK) {
|
if (WSAGetLastError() == WSAEMSGSIZE) {
|
||||||
|
// Skip packets larger than our buffer
|
||||||
|
printf("recv() message too large\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if (WSAGetLastError() != WSAEWOULDBLOCK) {
|
||||||
printf("recv() failed: %d\n", WSAGetLastError());
|
printf("recv() failed: %d\n", WSAGetLastError());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user