ObjFW  Check-in [97ccd4a3e4]

Overview
Comment:OFDNSResolver: Do not close the sockets

Instead, just release them. The reason for this is that -[close]
immediately closes the file descriptor, meaning the next run loop
iteration fails to remove them, as the file descriptor is no longer
valid.

Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 97ccd4a3e4709d2f280061a5a26473322ad901268d80e68c6f32e3b1c5701057
User & Date: js on 2018-08-05 19:31:46
Other Links: manifest | tags
Context
2018-08-05
20:00
Add a few missing casts check-in: 4f49f55859 user: js tags: trunk
19:31
OFDNSResolver: Do not close the sockets check-in: 97ccd4a3e4 user: js tags: trunk
19:27
OFRunLoop: More robust handling of cancels check-in: 1bf3b2ac7c user: js tags: trunk
Changes

Modified src/OFDNSResolver.m from [7ee76905cc] to [5d4867eed8].

1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
- (void)close
{
	void *pool = objc_autoreleasePoolPush();
	OFEnumerator *enumerator;
	OFDNSResolver_context *DNSResolverContext;

	[_IPv4Socket cancelAsyncRequests];
	[_IPv4Socket close];
	[_IPv4Socket release];
	_IPv4Socket = nil;

#ifdef OF_HAVE_IPV6
	[_IPv6Socket cancelAsyncRequests];
	[_IPv6Socket close];
	[_IPv6Socket release];
	_IPv6Socket = nil;
#endif

	enumerator = [_queries objectEnumerator];
	while ((DNSResolverContext = [enumerator nextObject]) != nil) {
		id target = [[[DNSResolverContext target] retain] autorelease];







<





<







1249
1250
1251
1252
1253
1254
1255

1256
1257
1258
1259
1260

1261
1262
1263
1264
1265
1266
1267
- (void)close
{
	void *pool = objc_autoreleasePoolPush();
	OFEnumerator *enumerator;
	OFDNSResolver_context *DNSResolverContext;

	[_IPv4Socket cancelAsyncRequests];

	[_IPv4Socket release];
	_IPv4Socket = nil;

#ifdef OF_HAVE_IPV6
	[_IPv6Socket cancelAsyncRequests];

	[_IPv6Socket release];
	_IPv6Socket = nil;
#endif

	enumerator = [_queries objectEnumerator];
	while ((DNSResolverContext = [enumerator nextObject]) != nil) {
		id target = [[[DNSResolverContext target] retain] autorelease];