Index: src/OFURL.m ================================================================== --- src/OFURL.m +++ src/OFURL.m @@ -480,13 +480,13 @@ [ret appendFormat: @"%@@", [_user stringByURLEncoding]]; if (_host != nil) [ret appendString: [_host stringByURLEncoding]]; - if (([_scheme isEqual: @"http"] && _port != 80) || - ([_scheme isEqual: @"https"] && _port != 443) || - ([_scheme isEqual: @"ftp"] && _port != 21)) + if (!(([_scheme isEqual: @"http"] && _port == 80) || + ([_scheme isEqual: @"https"] && _port == 443) || + ([_scheme isEqual: @"ftp"] && _port == 21))) [ret appendFormat: @":%u", _port]; if (_path != nil) [ret appendFormat: @"/%@", [_path stringByURLEncodingWithIgnoredCharacters: "/"]]; Index: tests/OFURLTests.m ================================================================== --- tests/OFURLTests.m +++ tests/OFURLTests.m @@ -58,11 +58,11 @@ [[u2 string] isEqual: @"http://foo"] && [[u3 string] isEqual: @"http://bar/"] && [[u4 string] isEqual: @"file:///etc/passwd"]) TEST(@"-[scheme]", - [[u1 scheme] isEqual: @"ht%3Atp"] && [[u4 scheme] isEqual: @"file"]) + [[u1 scheme] isEqual: @"ht:tp"] && [[u4 scheme] isEqual: @"file"]) TEST(@"-[user]", [[u1 user] isEqual: @"us:er"] && [u4 user] == nil) TEST(@"-[password]", [[u1 password] isEqual: @"p@w"] && [u4 password] == nil) TEST(@"-[host]", [[u1 host] isEqual: @"ho:st"] && [u4 port] == 0) TEST(@"-[port]", [u1 port] == 1234)