ObjFW  Check-in [ccc1b1989d]

Overview
Comment:Use case insensitive compare for URL scheme
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: ccc1b1989df6bb2a9646696e3ad715f8bc123b5421356f6a11301f09a6d3960a
User & Date: js on 2020-04-01 22:36:49
Other Links: manifest | tags
Context
2020-04-05
11:46
configure: Check whether *_l need _GNU_SOURCE check-in: fdbe09e8ea user: js tags: trunk
2020-04-01
22:36
Use case insensitive compare for URL scheme check-in: ccc1b1989d user: js tags: trunk
21:41
OFHTTPClient: Improve redirection checking logic check-in: efbbf65df2 user: js tags: trunk
Changes

Modified src/OFHTTPClient.m from [d31701c86f] to [85a479fa56].

311
312
313
314
315
316
317
318

319
320
321
322
323
324
325
326
311
312
313
314
315
316
317

318

319
320
321
322
323
324
325







-
+
-







	response.protocolVersionString = _version;
	response.statusCode = _status;
	response.headers = _serverHeaders;

	connectionHeader = [_serverHeaders objectForKey: @"Connection"];
	if ([_version isEqual: @"1.1"]) {
		if (connectionHeader != nil)
			keepAlive = ([connectionHeader caseInsensitiveCompare:
			keepAlive = [connectionHeader isEqual: @"close"];
			    @"close"] != OF_ORDERED_SAME);
		else
			keepAlive = true;
	} else {
		if (connectionHeader != nil)
			keepAlive = ([connectionHeader caseInsensitiveCompare:
			    @"keep-alive"] == OF_ORDERED_SAME);
		else
691
692
693
694
695
696
697
698


699
700
701
702
703
704
705
690
691
692
693
694
695
696

697
698
699
700
701
702
703
704
705







-
+
+







		OFURL *URL = _request.URL;
		OFTCPSocket *sock;
		uint16_t port;
		OFNumber *URLPort;

		[_client close];

		if ([URL.scheme isEqual: @"https"]) {
		if ([URL.scheme caseInsensitiveCompare: @"https"] ==
		    OF_ORDERED_SAME) {
			if (of_tls_socket_class == Nil)
				@throw [OFUnsupportedProtocolException
				    exceptionWithURL: URL];

			sock = [[[of_tls_socket_class alloc] init] autorelease];
			port = 443;
		} else {
1243
1244
1245
1246
1247
1248
1249

1250

1251
1252
1253
1254
1255
1256
1257
1243
1244
1245
1246
1247
1248
1249
1250

1251
1252
1253
1254
1255
1256
1257
1258







+
-
+







- (void)asyncPerformRequest: (OFHTTPRequest *)request
		  redirects: (unsigned int)redirects
{
	void *pool = objc_autoreleasePoolPush();
	OFURL *URL = request.URL;
	OFString *scheme = URL.scheme;

	if ([scheme caseInsensitiveCompare: @"http"] != OF_ORDERED_SAME &&
	if (![scheme isEqual: @"http"] && ![scheme isEqual: @"https"])
	    [scheme caseInsensitiveCompare: @"https"] != OF_ORDERED_SAME)
		@throw [OFUnsupportedProtocolException exceptionWithURL: URL];

	if (_inProgress)
		/* TODO: Find a better exception */
		@throw [OFAlreadyConnectedException exception];

	_inProgress = true;

Modified src/OFHTTPCookieManager.m from [b42d33b466] to [0f44cd343b].

61
62
63
64
65
66
67
68


69
70
71
72
73
74
75
61
62
63
64
65
66
67

68
69
70
71
72
73
74
75
76







-
+
+







	void *pool = objc_autoreleasePoolPush();
	OFString *cookieDomain, *URLHost;
	size_t i;

	if (![cookie.path hasPrefix: @"/"])
		cookie.path = @"/";

	if (cookie.secure && ![URL.scheme isEqual: @"https"]) {
	if (cookie.secure &&
	    [URL.scheme caseInsensitiveCompare: @"https"] != OF_ORDERED_SAME) {
		objc_autoreleasePoolPop(pool);
		return;
	}

	cookieDomain = cookie.domain.lowercaseString;
	cookie.domain = cookieDomain;

121
122
123
124
125
126
127
128


129
130
131
132
133
134
135
122
123
124
125
126
127
128

129
130
131
132
133
134
135
136
137







-
+
+







		OFString *cookieDomain, *URLHost, *cookiePath, *URLPath;
		bool match;

		expires = cookie.expires;
		if (expires != nil && expires.timeIntervalSinceNow <= 0)
			continue;

		if (cookie.secure && ![URL.scheme isEqual: @"https"])
		if (cookie.secure && [URL.scheme caseInsensitiveCompare:
		    @"https"] != OF_ORDERED_SAME)
			continue;

		pool = objc_autoreleasePoolPush();

		cookieDomain = cookie.domain.lowercaseString;
		URLHost = URL.host.lowercaseString;
		if ([cookieDomain hasPrefix: @"."]) {

Modified src/OFHTTPServer.m from [0402f29968] to [cf25c913ea].

251
252
253
254
255
256
257
258

259
260
261
262
263
264
265
266
251
252
253
254
255
256
257

258

259
260
261
262
263
264
265







-
+
-







		@throw [OFNotOpenException exceptionWithObject: self];

	@try {
		if (!_headersSent)
			[self of_sendHeaders];

		if (_chunked)
			[_socket writeBuffer: "0\r\n\r\n"
			[_socket writeString: @"0\r\n\r\n"];
				      length: 5];
	} @catch (OFWriteFailedException *e) {
		id <OFHTTPServerDelegate> delegate = _server.delegate;

		if ([delegate respondsToSelector: @selector(server:
		  didReceiveExceptionForResponse:request:exception:)])
			[delegate		    server: _server
			    didReceiveExceptionForResponse: self