diff --git a/mist/stun.cpp b/mist/stun.cpp index b8ffc3b..987b97e 100644 --- a/mist/stun.cpp +++ b/mist/stun.cpp @@ -179,7 +179,8 @@ bool getExternalAddressPortIP4(int proto, unsigned short localPort, PSOCKADDR_IN printf("STUN attribute out of bounds: %d\n", htons(attribute->length)); return false; } - else if (htons(attribute->type) != STUN_ATTRIBUTE_XOR_MAPPED_ADDRESS) { + // Mask off the comprehension bit + else if ((htons(attribute->type) & 0x7FFF) != STUN_ATTRIBUTE_XOR_MAPPED_ADDRESS) { // Continue searching if this wasn't our address bytesRead -= sizeof(*attribute) + htons(attribute->length); attribute = (PSTUN_ATTRIBUTE_HEADER)(((char*)attribute) + sizeof(*attribute) + htons(attribute->length));