X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=lhnet.c;h=e2ded868e5508f268a6d8f49bc9b9267084f66f4;hb=7e6a669cd2f7a4526c27b53abfa0e18fc0107bcd;hp=229825711dad97a57819daa6750fc8c127636473;hpb=80f2ffd875db95ac7cd03bec55a55690c8dbbf49;p=xonotic%2Fdarkplaces.git diff --git a/lhnet.c b/lhnet.c index 22982571..e2ded868 100644 --- a/lhnet.c +++ b/lhnet.c @@ -978,7 +978,13 @@ lhnetsocket_t *LHNET_OpenSocket_Connectionless(lhnetaddress_t *address) namelen = sizeof(localaddress->addr.in6); bindresult = bind(lhnetsocket->inetsocket, &localaddress->addr.sock, namelen); if (bindresult != -1) - getsockname(lhnetsocket->inetsocket, &localaddress->addr.sock, &namelen); + { + if (getsockname(lhnetsocket->inetsocket, &localaddress->addr.sock, &namelen)) + { + // If getsockname failed, we can assume the bound socket is useless. + bindresult = -1; + } + } } else #endif @@ -986,7 +992,13 @@ lhnetsocket_t *LHNET_OpenSocket_Connectionless(lhnetaddress_t *address) namelen = sizeof(localaddress->addr.in); bindresult = bind(lhnetsocket->inetsocket, &localaddress->addr.sock, namelen); if (bindresult != -1) - getsockname(lhnetsocket->inetsocket, &localaddress->addr.sock, &namelen); + { + if (getsockname(lhnetsocket->inetsocket, &localaddress->addr.sock, &namelen)) + { + // If getsockname failed, we can assume the bound socket is useless. + bindresult = -1; + } + } } if (bindresult != -1) { @@ -997,7 +1009,10 @@ lhnetsocket_t *LHNET_OpenSocket_Connectionless(lhnetaddress_t *address) { // enable DSCP for ToS support int tos = lhnet_default_dscp << 2; - setsockopt(lhnetsocket->inetsocket, IPPROTO_IP, IP_TOS, (char *) &tos, sizeof(tos)); + if (setsockopt(lhnetsocket->inetsocket, IPPROTO_IP, IP_TOS, (char *) &tos, sizeof(tos))) + { + // Error in setsockopt - fine, we'll simply set no TOS then. + } } #endif lhnetsocket->next = &lhnet_socketlist;