ObjFW  Diff

Differences From Artifact [b7f2de7d48]:

To Artifact [35ea54e031]:


676
677
678
679
680
681
682
683

684
685
686
687
688
689
690
691
692
693
694
695
696
697

698
699
700
701
702
703
704
676
677
678
679
680
681
682

683
684
685
686
687
688
689
690
691
692
693
694
695
696

697
698
699
700
701
702
703
704







-
+













-
+








	OF_HASH_FINALIZE(hash);

	return hash;
}

static OFString *
IPv4AddressString(const OFSocketAddress *address)
IPv4String(const OFSocketAddress *address)
{
	const struct sockaddr_in *addrIn = &address->sockaddr.in;
	uint32_t addr = OF_BSWAP32_IF_LE(addrIn->sin_addr.s_addr);
	OFString *string;

	string = [OFString stringWithFormat: @"%u.%u.%u.%u",
	    (addr & 0xFF000000) >> 24, (addr & 0x00FF0000) >> 16,
	    (addr & 0x0000FF00) >>  8, addr & 0x000000FF];

	return string;
}

static OFString *
IPv6AddressString(const OFSocketAddress *address)
IPv6String(const OFSocketAddress *address)
{
	OFMutableString *string = [OFMutableString string];
	const struct sockaddr_in6 *addrIn6 = &address->sockaddr.in6;
	int_fast8_t zerosStart = -1, maxZerosStart = -1;
	uint_fast8_t zerosCount = 0, maxZerosCount = 0;
	bool first = true;

761
762
763
764
765
766
767
768

769
770

771
772
773
774
775
776
777
761
762
763
764
765
766
767

768
769

770
771
772
773
774
775
776
777







-
+

-
+







}

OFString *
OFSocketAddressString(const OFSocketAddress *address)
{
	switch (address->family) {
	case OFSocketAddressFamilyIPv4:
		return IPv4AddressString(address);
		return IPv4String(address);
	case OFSocketAddressFamilyIPv6:
		return IPv6AddressString(address);
		return IPv6String(address);
	default:
		@throw [OFInvalidArgumentException exception];
	}
}

void
OFSocketAddressSetPort(OFSocketAddress *address, uint16_t port)