Changes In Branch mptcp Through [50035101ae] Excluding Merge-Ins
This is equivalent to a diff from 229486deb1 to 50035101ae
2024-10-28
| ||
23:46 | Initial MPTCP implementation for macOS/iOS Leaf check-in: 4e763857b8 user: js tags: mptcp | |
21:42 | Enable MPTCP for OFHTTPClient and OFHTTPServer check-in: 50035101ae user: js tags: mptcp | |
21:35 | Initial MPTCP implementation for Linux check-in: 71834180cb user: js tags: mptcp | |
2024-10-27
| ||
23:57 | Add support for \x from JSON5 Leaf check-in: 229486deb1 user: js tags: trunk | |
23:48 | Allow \u0000 in JSON check-in: d7bbf983f0 user: js tags: trunk | |
Modified src/OFHTTPClient.m from [8f9fbbe9f5] to [78cfc99be7].
︙ | |||
728 729 730 731 732 733 734 735 736 737 738 739 740 741 | 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 | + | OFTCPSocket *sock; uint16_t port; OFNumber *IRIPort; [_client close]; sock = [OFTCPSocket socket]; sock.usesMPTCP = true; if ([IRI.scheme caseInsensitiveCompare: @"https"] == OFOrderedSame) port = 443; else port = 80; |
︙ |
Modified src/OFHTTPServer.m from [db59500413] to [0f92d8dbbf].
︙ | |||
862 863 864 865 866 867 868 869 870 871 872 873 874 875 | 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 | + | if (_host == nil) @throw [OFInvalidArgumentException exception]; if (_listeningSocket != nil) @throw [OFAlreadyOpenException exceptionWithObject: self]; _listeningSocket = [[OFTCPSocket alloc] init]; _listeningSocket.usesMPTCP = true; address = [_listeningSocket bindToHost: _host port: _port]; _port = OFSocketAddressIPPort(&address); [_listeningSocket listen]; #ifdef OF_HAVE_THREADS if (_numberOfThreads > 1) { OFMutableArray *threads = |
︙ |
Modified src/OFTCPSocket.h from [c7a38bf638] to [2c25626468].
︙ | |||
85 86 87 88 89 90 91 | 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | + - + | @interface OFTCPSocket: OFStreamSocket { OFString *_Nullable _SOCKS5Host; uint16_t _SOCKS5Port; #ifdef OF_WII uint16_t _port; #endif uintptr_t _usesMPTCP; /* Change to bool on ABI bump */ |
︙ | |||
118 119 120 121 122 123 124 125 126 127 128 129 130 131 | 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | + + + + + + + + | * * @throw OFGetOptionFailedException The option could not be retrieved * @throw OFSetOptionFailedException The option could not be set */ @property (nonatomic) bool canDelaySendingSegments; #endif /** * @brief Whether the socket uses MPTCP. * * If you want to use MPTCP, set this to true before connecting or binding. * After connecting or binding, this returns whether MPTCP was used. */ @property (nonatomic) bool usesMPTCP; /** * @brief The host to use as a SOCKS5 proxy. */ @property OF_NULLABLE_PROPERTY (copy, nonatomic) OFString *SOCKS5Host; /** * @brief The port to use on the SOCKS5 proxy. |
︙ |
Modified src/OFTCPSocket.m from [5c97e81fe5] to [064f26252a].
︙ | |||
48 49 50 51 52 53 54 55 56 57 58 59 60 61 | 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | + + + + | #import "OFAlreadyOpenException.h" #import "OFBindIPSocketFailedException.h" #import "OFGetOptionFailedException.h" #import "OFNotImplementedException.h" #import "OFNotOpenException.h" #import "OFSetOptionFailedException.h" #ifdef OF_LINUX # include <linux/mptcp.h> #endif static const OFRunLoopMode connectRunLoopMode = @"OFTCPSocketConnectRunLoopMode"; static OFString *defaultSOCKS5Host = nil; static uint16_t defaultSOCKS5Port = 1080; |
︙ | |||
139 140 141 142 143 144 145 | 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 | - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + | - (bool)of_createSocketForAddress: (const OFSocketAddress *)address errNo: (int *)errNo { #if SOCK_CLOEXEC == 0 && defined(HAVE_FCNTL) && defined(FD_CLOEXEC) int flags; #endif |
︙ | |||
344 345 346 347 348 349 350 | 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 | + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + | socketAddresses = [[OFThread DNSResolver] resolveAddressesForHost: host addressFamily: OFSocketAddressFamilyAny]; address = *(OFSocketAddress *)[socketAddresses itemAtIndex: 0]; OFSocketAddressSetIPPort(&address, port); #ifdef OF_LINUX if (_usesMPTCP) { |
︙ | |||
507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 | 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 | + + + + + + + + + + + + + + + + + + | @throw [OFGetOptionFailedException exceptionWithObject: self errNo: _OFSocketErrNo()]; return !v; } #endif - (void)setUsesMPTCP: (bool)usesMPTCP { _usesMPTCP = usesMPTCP; } - (bool)usesMPTCP { #ifdef OF_LINUX struct mptcp_info info; socklen_t infoLen = (socklen_t)sizeof(info); if (getsockopt(_socket, SOL_MPTCP, MPTCP_INFO, &info, &infoLen) != -1) return true; #endif return false; } - (void)close { #ifdef OF_WII _port = 0; #endif [super close]; } @end |
Modified tests/OFHTTPClientTests.m from [e9b6e1eab7] to [962f5ae8ec].
︙ | |||
146 147 148 149 150 151 152 153 154 155 156 157 158 159 | 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 | + | bool sawHost = false, sawContentLength = false, sawContentType = false; bool sawUserAgent = false; char buffer[5]; [_condition lock]; listener = [OFTCPSocket socket]; listener.usesMPTCP = true; address = [listener bindToHost: @"127.0.0.1" port: 0]; _port = OFSocketAddressIPPort(&address); [listener listen]; [_condition signal]; [_condition unlock]; client = [listener accept]; |
︙ |