Differences From Artifact [ad50b942db]:
- File
src/OFUDPSocket.m
— part of check-in
[12b8a7552e]
at
2016-03-27 23:10:53
on branch trunk
— Add socket support for Nintendo 3DS
This removes the port registry that existed for the Wii and instead
tries binding to random ports in a loop until it succeeds or errno is
not EADDRINUSE. This is done for the Wii and Nintendo 3DS now.This also includes several other socket-related cleanups. (user: js, size: 14423) [annotate] [blame] [check-ins using]
To Artifact [bc2dead81f]:
- File src/OFUDPSocket.m — part of check-in [e840997cc8] at 2016-05-06 20:54:33 on branch trunk — Make GCC happy with -Wsign-compare (user: js, size: 14472) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
182 183 184 185 186 187 188 | if (address1->address.ss_family != address2->address.ss_family) return false; switch (address1->address.ss_family) { case AF_INET: #if !defined(OF_WII) && !defined(OF_NINTENDO_3DS) | | | | 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 | if (address1->address.ss_family != address2->address.ss_family) return false; switch (address1->address.ss_family) { case AF_INET: #if !defined(OF_WII) && !defined(OF_NINTENDO_3DS) if (address1->length < (socklen_t)sizeof(struct sockaddr_in) || address2->length < (socklen_t)sizeof(struct sockaddr_in)) @throw [OFInvalidArgumentException exception]; #else if (address1->length < 8 || address2->length < 8) @throw [OFInvalidArgumentException exception]; #endif sin_1 = (struct sockaddr_in*)&address1->address; |
︙ | ︙ | |||
239 240 241 242 243 244 245 | #endif hash += address->address.ss_family; switch (address->address.ss_family) { case AF_INET: #if !defined(OF_WII) && !defined(OF_NINTENDO_3DS) | | | 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 | #endif hash += address->address.ss_family; switch (address->address.ss_family) { case AF_INET: #if !defined(OF_WII) && !defined(OF_NINTENDO_3DS) if (address->length < (socklen_t)sizeof(struct sockaddr_in)) @throw [OFInvalidArgumentException exception]; #else if (address->length < 8) @throw [OFInvalidArgumentException exception]; #endif sin = (struct sockaddr_in*)&address->address; |
︙ | ︙ | |||
302 303 304 305 306 307 308 | + (void)resolveAddressForHost: (OFString*)host port: (uint16_t)port address: (of_udp_socket_address_t*)address { of_resolver_result_t **results = of_resolve_host(host, port, SOCK_DGRAM); | | > | 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 | + (void)resolveAddressForHost: (OFString*)host port: (uint16_t)port address: (of_udp_socket_address_t*)address { of_resolver_result_t **results = of_resolve_host(host, port, SOCK_DGRAM); assert(results[0]->addressLength <= (socklen_t)sizeof(address->address)); memcpy(&address->address, results[0]->address, results[0]->addressLength); address->length = results[0]->addressLength; of_resolver_free(results); } |
︙ | ︙ |