Overview
Context
Changes
Modified src/OFDNSResolver.h
from [9a991f874e]
to [e885685095].
︙ | | |
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
-
+
-
+
-
+
-
+
+
+
+
+
+
+
|
/*! The server does not have support for the requested query */
OF_DNS_RESOLVER_ERROR_SERVER_NOT_IMPLEMENTED,
/*! The server refused the query */
OF_DNS_RESOLVER_ERROR_SERVER_REFUSED
} of_dns_resolver_error_t;
/*!
* @protocol OFDNSResolverDelegate OFDNSResolver.h ObjFW/OFDNSResolver.h
* @protocol OFDNSResolverQueryDelegate OFDNSResolver.h ObjFW/OFDNSResolver.h
*
* @brief A delegate for OFDNSResolver.
* @brief A delegate for performed DNS queries.
*/
@protocol OFDNSResolverDelegate <OFObject>
@protocol OFDNSResolverQueryDelegate <OFObject>
@optional
/*!
* @brief This method is called when a DNS resolver performed a query.
*
* @param resolver The acting resolver
* @param query The query performed by the resolver
* @param response The response from the DNS server, or nil on error
* @param exception An exception that happened during resolving, or nil on
* success
*/
- (void)resolver: (OFDNSResolver *)resolver
didPerformQuery: (OFDNSQuery *)query
response: (nullable OFDNSResponse *)response
exception: (nullable id)exception;
@end
/*!
* @protocol OFDNSResolverQueryDelegate OFDNSResolver.h ObjFW/OFDNSResolver.h
*
* @brief A delegate for resolved hosts.
*/
@protocol OFDNSResolverHostDelegate <OFObject>
/*!
* @brief This method is called when a DNS resolver resolved a host to
* addresses.
*
* @param resolver The acting resolver
* @param host The host the resolver resolved
* @param addresses OFData containing several of_socket_address_t
|
︙ | | |
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
|
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
|
-
+
-
+
-
+
-
+
-
+
|
/*!
* @brief Asynchronously performs the specified query.
*
* @param query The query to perform
* @param delegate The delegate to use for callbacks
*/
- (void)asyncPerformQuery: (OFDNSQuery *)query
delegate: (id <OFDNSResolverDelegate>)delegate;
delegate: (id <OFDNSResolverQueryDelegate>)delegate;
/*!
* @brief Asynchronously performs the specified query.
*
* @param query The query to perform
* @param runLoopMode The run loop mode in which to resolve
* @param delegate The delegate to use for callbacks
*/
- (void)asyncPerformQuery: (OFDNSQuery *)query
runLoopMode: (of_run_loop_mode_t)runLoopMode
delegate: (id <OFDNSResolverDelegate>)delegate;
delegate: (id <OFDNSResolverQueryDelegate>)delegate;
/*!
* @brief Asynchronously resolves the specified host to socket addresses.
*
* @param host The host to resolve
* @param delegate The delegate to use for callbacks
*/
- (void)asyncResolveAddressesForHost: (OFString *)host
delegate: (id <OFDNSResolverDelegate>)delegate;
delegate: (id <OFDNSResolverHostDelegate>)delegate;
/*!
* @brief Asynchronously resolves the specified host to socket addresses.
*
* @param host The host to resolve
* @param addressFamily The desired socket address family
* @param delegate The delegate to use for callbacks
*/
- (void)asyncResolveAddressesForHost: (OFString *)host
addressFamily: (of_socket_address_family_t)addressFamily
delegate: (id <OFDNSResolverDelegate>)delegate;
delegate: (id <OFDNSResolverHostDelegate>)delegate;
/*!
* @brief Asynchronously resolves the specified host to socket addresses.
*
* @param host The host to resolve
* @param addressFamily The desired socket address family
* @param runLoopMode The run loop mode in which to resolve
* @param delegate The delegate to use for callbacks
*/
- (void)asyncResolveAddressesForHost: (OFString *)host
addressFamily: (of_socket_address_family_t)addressFamily
runLoopMode: (of_run_loop_mode_t)runLoopMode
delegate: (id <OFDNSResolverDelegate>)delegate;
delegate: (id <OFDNSResolverHostDelegate>)delegate;
/*!
* @brief Synchronously resolves the specified host to socket addresses.
*
* @param host The host to resolve
* @param addressFamily The desired socket address family
* @return OFData containing several of_socket_address_t
|
︙ | | |
Modified src/OFDNSResolver.m
from [ae60f26781]
to [fbee61aa4a].
︙ | | |
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
-
+
-
+
|
{
@public
OFDNSQuery *_query;
OFNumber *_ID;
OFDNSResolverSettings *_settings;
size_t _nameServersIndex;
unsigned int _attempt;
id <OFDNSResolverDelegate> _delegate;
id <OFDNSResolverQueryDelegate> _delegate;
OFData *_queryData;
of_socket_address_t _usedNameServer;
OFTimer *_cancelTimer;
}
- (instancetype)initWithQuery: (OFDNSQuery *)query
ID: (OFNumber *)ID
settings: (OFDNSResolverSettings *)settings
delegate: (id <OFDNSResolverDelegate>)delegate;
delegate: (id <OFDNSResolverQueryDelegate>)delegate;
@end
static OFString *
parseString(const unsigned char *buffer, size_t length, size_t *i)
{
uint8_t stringLength;
OFString *string;
|
︙ | | |
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
|
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
|
-
+
|
return ret;
}
@implementation OFDNSResolverContext
- (instancetype)initWithQuery: (OFDNSQuery *)query
ID: (OFNumber *)ID
settings: (OFDNSResolverSettings *)settings
delegate: (id <OFDNSResolverDelegate>)delegate
delegate: (id <OFDNSResolverQueryDelegate>)delegate
{
self = [super init];
@try {
void *pool = objc_autoreleasePoolPush();
OFMutableData *queryData;
uint16_t tmp;
|
︙ | | |
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
|
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
|
-
+
-
+
|
runLoopMode: runLoopMode];
[sock asyncReceiveIntoBuffer: _buffer
length: BUFFER_LENGTH
runLoopMode: runLoopMode];
}
- (void)asyncPerformQuery: (OFDNSQuery *)query
delegate: (id <OFDNSResolverDelegate>)delegate
delegate: (id <OFDNSResolverQueryDelegate>)delegate
{
[self asyncPerformQuery: query
runLoopMode: of_run_loop_mode_default
delegate: delegate];
}
- (void)asyncPerformQuery: (OFDNSQuery *)query
runLoopMode: (of_run_loop_mode_t)runLoopMode
delegate: (id <OFDNSResolverDelegate>)delegate
delegate: (id <OFDNSResolverQueryDelegate>)delegate
{
void *pool = objc_autoreleasePoolPush();
OFNumber *ID;
OFDNSResolverContext *context;
/* Random, unused ID */
do {
|
︙ | | |
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
|
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
|
-
+
-
+
-
+
|
response: response
exception: exception];
return false;
}
- (void)asyncResolveAddressesForHost: (OFString *)host
delegate: (id <OFDNSResolverDelegate>)delegate
delegate: (id <OFDNSResolverHostDelegate>)delegate
{
[self asyncResolveAddressesForHost: host
addressFamily: OF_SOCKET_ADDRESS_FAMILY_ANY
runLoopMode: of_run_loop_mode_default
delegate: delegate];
}
- (void)asyncResolveAddressesForHost: (OFString *)host
addressFamily: (of_socket_address_family_t)addressFamily
delegate: (id <OFDNSResolverDelegate>)delegate
delegate: (id <OFDNSResolverHostDelegate>)delegate
{
[self asyncResolveAddressesForHost: host
addressFamily: addressFamily
runLoopMode: of_run_loop_mode_default
delegate: delegate];
}
- (void)asyncResolveAddressesForHost: (OFString *)host
addressFamily: (of_socket_address_family_t)addressFamily
runLoopMode: (of_run_loop_mode_t)runLoopMode
delegate: (id <OFDNSResolverDelegate>)delegate
delegate: (id <OFDNSResolverHostDelegate>)delegate
{
void *pool = objc_autoreleasePoolPush();
OFHostAddressResolver *resolver = [[[OFHostAddressResolver alloc]
initWithHost: host
addressFamily: addressFamily
resolver: self
settings: _settings
|
︙ | | |
Modified src/OFHostAddressResolver.h
from [3a09606535]
to [1456ca658f].
︙ | | |
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
-
+
-
+
-
+
|
@class OFDNSResolverSettings;
@class OFDNSResourceRecord;
@class OFMutableArray OF_GENERIC(ObjectType);
@class OFMutableData;
@class OFString;
@interface OFHostAddressResolver: OFObject <OFDNSResolverDelegate>
@interface OFHostAddressResolver: OFObject <OFDNSResolverQueryDelegate>
{
OFString *_host;
of_socket_address_family_t _addressFamily;
OFDNSResolver *_resolver;
OFDNSResolverSettings *_settings;
of_run_loop_mode_t _Nullable _runLoopMode;
id <OFDNSResolverDelegate> _Nullable _delegate;
id <OFDNSResolverHostDelegate> _Nullable _delegate;
unsigned int _numExpectedResponses;
OFMutableData *_addresses;
}
- (instancetype)initWithHost: (OFString *)host
addressFamily: (of_socket_address_family_t)addressFamily
resolver: (OFDNSResolver *)resolver
settings: (OFDNSResolverSettings *)settings
runLoopMode: (nullable of_run_loop_mode_t)runLoopMode
delegate: (nullable id <OFDNSResolverDelegate>)delegate;
delegate: (nullable id <OFDNSResolverHostDelegate>)delegate;
- (void)asyncResolve;
- (OFData *)resolve;
@end
OF_ASSUME_NONNULL_END
|
Modified src/OFHostAddressResolver.m
from [347a5e2986]
to [45979fed60].
︙ | | |
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
-
+
|
#import "OFString.h"
#import "OFTimer.h"
#import "OFInvalidArgumentException.h"
#import "OFInvalidFormatException.h"
#import "OFResolveHostFailedException.h"
@interface OFHostAddressResolverDelegate: OFObject <OFDNSResolverDelegate>
@interface OFHostAddressResolverDelegate: OFObject <OFDNSResolverHostDelegate>
{
@public
bool _done;
OFData *_addresses;
id _exception;
}
@end
|
︙ | | |
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
-
+
|
*address = [record address];
return true;
}
static void
callDelegateInMode(of_run_loop_mode_t runLoopMode,
id <OFDNSResolverDelegate> delegate, OFDNSResolver *resolver,
id <OFDNSResolverHostDelegate> delegate, OFDNSResolver *resolver,
OFString *host, OFData *addresses, id exception)
{
SEL selector = @selector(resolver:didResolveHost:addresses:exception:);
if ([delegate respondsToSelector: selector]) {
OFTimer *timer = [OFTimer
timerWithTimeInterval: 0
|
︙ | | |
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
-
+
|
@implementation OFHostAddressResolver: OFObject
- (instancetype)initWithHost: (OFString *)host
addressFamily: (of_socket_address_family_t)addressFamily
resolver: (OFDNSResolver *)resolver
settings: (OFDNSResolverSettings *)settings
runLoopMode: (of_run_loop_mode_t)runLoopMode
delegate: (id <OFDNSResolverDelegate>)delegate
delegate: (id <OFDNSResolverHostDelegate>)delegate
{
self = [super init];
@try {
_host = [host copy];
_addressFamily = addressFamily;
_resolver = [resolver retain];
|
︙ | | |
Modified src/OFTCPSocket.m
from [21a88b2103]
to [5389356633].
︙ | | |
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
-
+
|
Class of_tls_socket_class = Nil;
static OFString *defaultSOCKS5Host = nil;
static uint16_t defaultSOCKS5Port = 1080;
@interface OFTCPSocketAsyncConnectDelegate: OFObject <OFTCPSocketDelegate,
OFTCPSocketDelegate_Private, OFDNSResolverDelegate>
OFTCPSocketDelegate_Private, OFDNSResolverHostDelegate>
{
OFTCPSocket *_socket;
OFString *_host;
uint16_t _port;
OFString *_SOCKS5Host;
uint16_t _SOCKS5Port;
id <OFTCPSocketDelegate> _delegate;
|
︙ | | |
Modified utils/ofdns/OFDNS.m
from [0a1cb7aeaf]
to [7b9f872083].
︙ | | |
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
-
+
-
-
-
-
+
+
+
+
|
#import "OFApplication.h"
#import "OFArray.h"
#import "OFDNSResolver.h"
#import "OFSandbox.h"
#import "OFStdIOStream.h"
@interface OFDNS: OFObject <OFApplicationDelegate, OFDNSResolverDelegate>
@interface OFDNS: OFObject <OFApplicationDelegate, OFDNSResolverQueryDelegate>
@end
OF_APPLICATION_DELEGATE(OFDNS)
@implementation OFDNS
- (void)resolver: (OFDNSResolver *)resolver
didPerformQuery: (OFDNSQuery *)query
response: (OFDNSResponse *)response
exception: (id)exception
- (void)resolver: (OFDNSResolver *)resolver
didPerformQuery: (OFDNSQuery *)query
response: (OFDNSResponse *)response
exception: (id)exception
{
if (exception != nil) {
[of_stderr writeFormat: @"Failed to resolve: %@\n", exception];
[OFApplication terminateWithStatus: 1];
}
[of_stdout writeFormat: @"%@\n", response];
|
︙ | | |