435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
|
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
|
-
+
-
-
+
-
|
addrIn6->sin6_family = AF_UNSPEC;
#endif
addrIn6->sin6_port = OF_BSWAP16_IF_LE(port);
doubleColon = [IPv6 rangeOfString: @"::"].location;
if (doubleColon != OF_NOT_FOUND) {
OFString *left = [IPv6 substringWithRange:
OFString *left = [IPv6 substringToIndex: doubleColon];
of_range(0, doubleColon)];
OFString *right = [IPv6 substringWithRange:
OFString *right = [IPv6 substringFromIndex: doubleColon + 2];
of_range(doubleColon + 2, IPv6.length - doubleColon - 2)];
OFArray OF_GENERIC(OFString *) *leftComponents;
OFArray OF_GENERIC(OFString *) *rightComponents;
size_t i;
if ([right hasPrefix: @":"] || [right containsString: @"::"])
@throw [OFInvalidFormatException exception];
|
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
|
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
|
-
+
|
default:
@throw [OFInvalidArgumentException exception];
}
return true;
}
uint32_t
unsigned long
of_socket_address_hash(const of_socket_address_t *address)
{
uint32_t hash;
OF_HASH_INIT(hash);
OF_HASH_ADD(hash, address->family);
|