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);
}
|
| ︙ | ︙ |