︙ | | | ︙ | |
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
|
@public
unsigned int _expectedResponses;
}
- (instancetype)initWithHost: (OFString *)host
delegate: (id)delegate;
- (bool)parseRecords: (OFArray *)records
answerRecords: (OFDictionary *)answerRecords
additionalRecords: (OFDictionary *)additionalRecords
recordType: (of_dns_resource_record_type_t)recordType
recursion: (unsigned int)recursion
result: (OFMutableArray *)result;
- (void)resolveCNAME: (OFCNAMEDNSResourceRecord *)CNAME
answerRecords: (OFDictionary *)answerRecords
additionalRecords: (OFDictionary *)additionalRecords
recordType: (of_dns_resource_record_type_t)recordType
recursion: (unsigned int)recursion
result: (OFMutableArray *)result;
- (void)resolver: (OFDNSResolver *)resolver
didResolveCNAME: (OFString *)CNAME
answerRecords: (OFDictionary *)answerRecords
authorityRecords: (OFDictionary *)authorityRecords
additionalRecords: (OFDictionary *)additionalRecords
context: (OFNumber *)context
exception: (id)exception;
- (void)done;
- (void)resolver: (OFDNSResolver *)resolver
didResolveDomainName: (OFString *)domainName
answerRecords: (OFDictionary *)answerRecords
authorityRecords: (OFDictionary *)authorityRecords
additionalRecords: (OFDictionary *)additionalRecords
context: (OFNumber *)context
exception: (id)exception;
@end
@interface OFDNSResolverResolveSocketAddressesDelegate: OFObject
<OFDNSResolverDelegate>
{
|
|
<
|
<
|
|
|
<
<
|
|
|
<
<
|
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
|
@public
unsigned int _expectedResponses;
}
- (instancetype)initWithHost: (OFString *)host
delegate: (id)delegate;
- (bool)parseRecords: (OFArray *)records
response: (OFDNSResponse *)response
recordType: (of_dns_resource_record_type_t)recordType
recursion: (unsigned int)recursion
result: (OFMutableArray *)result;
- (void)resolveCNAME: (OFCNAMEDNSResourceRecord *)CNAME
response: (OFDNSResponse *)response
recordType: (of_dns_resource_record_type_t)recordType
recursion: (unsigned int)recursion
result: (OFMutableArray *)result;
- (void)resolver: (OFDNSResolver *)resolver
didResolveCNAME: (OFString *)CNAME
response: (OFDNSResponse *)response
context: (OFNumber *)context
exception: (id)exception;
- (void)done;
- (void)resolver: (OFDNSResolver *)resolver
didResolveDomainName: (OFString *)domainName
response: (OFDNSResponse *)response
context: (OFNumber *)context
exception: (id)exception;
@end
@interface OFDNSResolverResolveSocketAddressesDelegate: OFObject
<OFDNSResolverDelegate>
{
|
︙ | | | ︙ | |
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
|
[array makeImmutable];
[ret makeImmutable];
return ret;
}
static void callback(id target, SEL selector, OFDNSResolver *resolver,
OFString *domainName, OFDictionary *answerRecords,
OFDictionary *authorityRecords, OFDictionary *additionalRecords, id context,
id exception)
{
void (*method)(id, SEL, OFDNSResolver *, OFString *, OFDictionary *,
OFDictionary *, OFDictionary *, id, id) = (void (*)(id, SEL,
OFDNSResolver *, OFString *, OFDictionary *, OFDictionary *,
OFDictionary *, id, id))[target methodForSelector: selector];
method(target, selector, resolver, domainName, answerRecords,
authorityRecords, additionalRecords, context, exception);
}
@implementation OFDNSResolverSettings
- (instancetype)initWithNameServers: (OFArray *)nameServers
searchDomains: (OFArray *)searchDomains
timeout: (of_time_interval_t)timeout
maxAttempts: (unsigned int)maxAttempts
|
>
|
<
<
|
|
|
<
|
|
|
|
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
|
[array makeImmutable];
[ret makeImmutable];
return ret;
}
static void
callback(id target, SEL selector, OFDNSResolver *resolver, OFString *domainName,
OFDNSResponse *response, id context, id exception)
{
void (*method)(id, SEL, OFDNSResolver *, OFString *, OFDNSResponse *,
id, id) = (void (*)(id, SEL, OFDNSResolver *, OFString *,
OFDNSResponse *, id, id))[target methodForSelector: selector];
method(target, selector, resolver, domainName, response, context,
exception);
}
@implementation OFDNSResolverSettings
- (instancetype)initWithNameServers: (OFArray *)nameServers
searchDomains: (OFArray *)searchDomains
timeout: (of_time_interval_t)timeout
maxAttempts: (unsigned int)maxAttempts
|
︙ | | | ︙ | |
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
|
[_resolver release];
[_domainName release];
[super dealloc];
}
- (bool)parseRecords: (OFArray *)records
answerRecords: (OFDictionary *)answerRecords
additionalRecords: (OFDictionary *)additionalRecords
recordType: (of_dns_resource_record_type_t)recordType
recursion: (unsigned int)recursion
result: (OFMutableArray *)result
{
bool found = false;
for (OFDNSResourceRecord *record in records) {
if (record.recordClass != OF_DNS_RESOURCE_RECORD_CLASS_IN)
continue;
if (record.recordType == recordType) {
[result addObject: record];
found = true;
} else if (record.recordType ==
OF_DNS_RESOURCE_RECORD_TYPE_CNAME) {
[self resolveCNAME: (OFCNAMEDNSResourceRecord *)record
answerRecords: answerRecords
additionalRecords: additionalRecords
recordType: recordType
recursion: recursion
result: result];
found = true;
}
}
return found;
}
- (void)resolveCNAME: (OFCNAMEDNSResourceRecord *)CNAME
answerRecords: (OFDictionary *)answerRecords
additionalRecords: (OFDictionary *)additionalRecords
recordType: (of_dns_resource_record_type_t)recordType
recursion: (unsigned int)recursion
result: (OFMutableArray *)result
{
OFString *alias = CNAME.alias;
bool found = false;
if (recursion == 0)
return;
if ([self parseRecords: [answerRecords objectForKey: alias]
answerRecords: answerRecords
additionalRecords: additionalRecords
recordType: recordType
recursion: recursion - 1
result: result])
found = true;
if ([self parseRecords: [additionalRecords objectForKey: alias]
answerRecords: answerRecords
additionalRecords: additionalRecords
recordType: recordType
recursion: recursion - 1
result: result])
found = true;
if (!found) {
of_run_loop_mode_t runLoopMode =
|
|
<
|
|
|
|
|
|
<
|
|
|
|
<
|
|
<
|
|
<
|
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
|
[_resolver release];
[_domainName release];
[super dealloc];
}
- (bool)parseRecords: (OFArray *)records
response: (OFDNSResponse *)response
recordType: (of_dns_resource_record_type_t)recordType
recursion: (unsigned int)recursion
result: (OFMutableArray *)result
{
bool found = false;
for (OF_KINDOF(OFDNSResourceRecord *) record in records) {
if ([record recordClass] != OF_DNS_RESOURCE_RECORD_CLASS_IN)
continue;
if ([record recordType] == recordType) {
[result addObject: record];
found = true;
} else if ([record recordType] ==
OF_DNS_RESOURCE_RECORD_TYPE_CNAME) {
[self resolveCNAME: record
response: response
recordType: recordType
recursion: recursion
result: result];
found = true;
}
}
return found;
}
- (void)resolveCNAME: (OFCNAMEDNSResourceRecord *)CNAME
response: (OFDNSResponse *)response
recordType: (of_dns_resource_record_type_t)recordType
recursion: (unsigned int)recursion
result: (OFMutableArray *)result
{
OFString *alias = CNAME.alias;
bool found = false;
if (recursion == 0)
return;
if ([self parseRecords: [response.answerRecords objectForKey: alias]
response: response
recordType: recordType
recursion: recursion - 1
result: result])
found = true;
if ([self parseRecords: [response.additionalRecords objectForKey: alias]
response: response
recordType: recordType
recursion: recursion - 1
result: result])
found = true;
if (!found) {
of_run_loop_mode_t runLoopMode =
|
︙ | | | ︙ | |
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
|
[_resolver of_asyncResolveHost: alias
recordClass: OF_DNS_RESOURCE_RECORD_CLASS_IN
recordType: recordType
runLoopMode: runLoopMode
target: self
selector: @selector(resolver:
didResolveCNAME:
answerRecords:
authorityRecords:
additionalRecords:context:
exception:)
context: recordTypeNumber];
}
}
- (void)resolver: (OFDNSResolver *)resolver
didResolveCNAME: (OFString *)CNAME
answerRecords: (OFDictionary *)answerRecords
authorityRecords: (OFDictionary *)authorityRecords
additionalRecords: (OFDictionary *)additionalRecords
context: (OFNumber *)context
exception: (id)exception
{
/*
* TODO: Error handling could be improved. Ignore error if there are
* responses, otherwise propagate error.
*/
of_dns_resource_record_type_t recordType = context.unsignedIntValue;
|
|
<
<
<
|
|
|
|
<
<
|
|
|
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
|
[_resolver of_asyncResolveHost: alias
recordClass: OF_DNS_RESOURCE_RECORD_CLASS_IN
recordType: recordType
runLoopMode: runLoopMode
target: self
selector: @selector(resolver:
didResolveCNAME:response:
context:exception:)
context: recordTypeNumber];
}
}
- (void)resolver: (OFDNSResolver *)resolver
didResolveCNAME: (OFString *)CNAME
response: (OFDNSResponse *)response
context: (OFNumber *)context
exception: (id)exception
{
/*
* TODO: Error handling could be improved. Ignore error if there are
* responses, otherwise propagate error.
*/
of_dns_resource_record_type_t recordType = context.unsignedIntValue;
|
︙ | | | ︙ | |
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
|
[self done];
return;
}
records = [OFMutableArray array];
if ([self parseRecords: [answerRecords objectForKey: CNAME]
answerRecords: answerRecords
additionalRecords: additionalRecords
recordType: recordType
recursion: CNAME_RECURSION
result: records])
found = true;
if ([self parseRecords: [additionalRecords objectForKey: CNAME]
answerRecords: answerRecords
additionalRecords: additionalRecords
recordType: recordType
recursion: CNAME_RECURSION
result: records])
found = true;
if (!found) {
if (_expectedResponses == 0)
|
|
|
<
|
|
<
|
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
|
[self done];
return;
}
records = [OFMutableArray array];
if ([self parseRecords: [response.answerRecords objectForKey: CNAME]
response: response
recordType: recordType
recursion: CNAME_RECURSION
result: records])
found = true;
if ([self parseRecords: [response.additionalRecords objectForKey: CNAME]
response: response
recordType: recordType
recursion: CNAME_RECURSION
result: records])
found = true;
if (!found) {
if (_expectedResponses == 0)
|
︙ | | | ︙ | |
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
|
didResolveDomainName: _domainName
socketAddresses: (exception == nil ? addresses : nil)
exception: exception];
}
- (void)resolver: (OFDNSResolver *)resolver
didResolveDomainName: (OFString *)domainName
answerRecords: (OFDictionary *)answerRecords
authorityRecords: (OFDictionary *)authorityRecords
additionalRecords: (OFDictionary *)additionalRecords
context: (OFNumber *)context
exception: (id)exception
{
/*
* TODO: Error handling could be improved. Ignore error if there are
* responses, otherwise propagate error.
*/
|
|
<
<
|
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
|
didResolveDomainName: _domainName
socketAddresses: (exception == nil ? addresses : nil)
exception: exception];
}
- (void)resolver: (OFDNSResolver *)resolver
didResolveDomainName: (OFString *)domainName
response: (OFDNSResponse *)response
context: (OFNumber *)context
exception: (id)exception
{
/*
* TODO: Error handling could be improved. Ignore error if there are
* responses, otherwise propagate error.
*/
|
︙ | | | ︙ | |
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
|
if (exception != nil) {
if (_expectedResponses == 0)
[self done];
return;
}
[self parseRecords: [answerRecords objectForKey: _domainName]
answerRecords: answerRecords
additionalRecords: additionalRecords
recordType: recordType
recursion: CNAME_RECURSION
result: _records];
if (_expectedResponses == 0)
[self done];
}
|
|
|
<
|
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
|
if (exception != nil) {
if (_expectedResponses == 0)
[self done];
return;
}
[self parseRecords: [response.answerRecords objectForKey: _domainName]
response: response
recordType: recordType
recursion: CNAME_RECURSION
result: _records];
if (_expectedResponses == 0)
[self done];
}
|
︙ | | | ︙ | |
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
|
runLoopMode: runLoopMode];
objc_autoreleasePoolPop(pool);
}
- (void)of_resolver: (OFDNSResolver *)resolver
didResolveDomainName: (OFString *)domainName
answerRecords: (of_dns_resolver_records_t)answerRecords
authorityRecords: (of_dns_resolver_records_t)authorityRecords
additionalRecords: (of_dns_resolver_records_t)additionalRecords
context: (id)delegate
exception: (id)exception
{
if ([delegate respondsToSelector: @selector(resolver:
didResolveDomainName:answerRecords:authorityRecords:
additionalRecords:exception:)])
[delegate resolver: resolver
didResolveDomainName: domainName
answerRecords: answerRecords
authorityRecords: authorityRecords
additionalRecords: additionalRecords
exception: exception];
}
- (void)asyncResolveHost: (OFString *)host
delegate: (id <OFDNSResolverDelegate>)delegate
{
[self of_asyncResolveHost: host
recordClass: OF_DNS_RESOURCE_RECORD_CLASS_IN
recordType: OF_DNS_RESOURCE_RECORD_TYPE_ALL
runLoopMode: of_run_loop_mode_default
target: self
selector: @selector(of_resolver:didResolveDomainName:
answerRecords:authorityRecords:
additionalRecords:context:exception:)
context: delegate];
}
- (void)asyncResolveHost: (OFString *)host
recordClass: (of_dns_resource_record_class_t)recordClass
recordType: (of_dns_resource_record_type_t)recordType
delegate: (id <OFDNSResolverDelegate>)delegate
{
[self of_asyncResolveHost: host
recordClass: recordClass
recordType: recordType
runLoopMode: of_run_loop_mode_default
target: self
selector: @selector(of_resolver:didResolveDomainName:
answerRecords:authorityRecords:
additionalRecords:context:exception:)
context: delegate];
}
- (void)asyncResolveHost: (OFString *)host
recordClass: (of_dns_resource_record_class_t)recordClass
recordType: (of_dns_resource_record_type_t)recordType
runLoopMode: (of_run_loop_mode_t)runLoopMode
delegate: (id <OFDNSResolverDelegate>)delegate
{
[self of_asyncResolveHost: host
recordClass: recordClass
recordType: recordType
runLoopMode: runLoopMode
target: self
selector: @selector(of_resolver:didResolveDomainName:
answerRecords:authorityRecords:
additionalRecords:context:exception:)
context: delegate];
}
- (void)of_asyncResolveHost: (OFString *)host
recordClass: (of_dns_resource_record_class_t)recordClass
recordType: (of_dns_resource_record_type_t)recordType
runLoopMode: (of_run_loop_mode_t)runLoopMode
|
|
<
<
|
<
<
<
<
>
<
|
<
|
<
|
|
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
|
runLoopMode: runLoopMode];
objc_autoreleasePoolPop(pool);
}
- (void)of_resolver: (OFDNSResolver *)resolver
didResolveDomainName: (OFString *)domainName
response: (OFDNSResponse *)response
context: (id)delegate
exception: (id)exception
{
if ([delegate respondsToSelector: @selector(resolver:
didResolveDomainName:response:exception:)])
[delegate resolver: resolver
didResolveDomainName: domainName
response: response
exception: exception];
}
- (void)asyncResolveHost: (OFString *)host
delegate: (id <OFDNSResolverDelegate>)delegate
{
[self of_asyncResolveHost: host
recordClass: OF_DNS_RESOURCE_RECORD_CLASS_IN
recordType: OF_DNS_RESOURCE_RECORD_TYPE_ALL
runLoopMode: of_run_loop_mode_default
target: self
selector: @selector(of_resolver:didResolveDomainName:
response:context:exception:)
context: delegate];
}
- (void)asyncResolveHost: (OFString *)host
recordClass: (of_dns_resource_record_class_t)recordClass
recordType: (of_dns_resource_record_type_t)recordType
delegate: (id <OFDNSResolverDelegate>)delegate
{
[self of_asyncResolveHost: host
recordClass: recordClass
recordType: recordType
runLoopMode: of_run_loop_mode_default
target: self
selector: @selector(of_resolver:didResolveDomainName:
response:context:exception:)
context: delegate];
}
- (void)asyncResolveHost: (OFString *)host
recordClass: (of_dns_resource_record_class_t)recordClass
recordType: (of_dns_resource_record_type_t)recordType
runLoopMode: (of_run_loop_mode_t)runLoopMode
delegate: (id <OFDNSResolverDelegate>)delegate
{
[self of_asyncResolveHost: host
recordClass: recordClass
recordType: recordType
runLoopMode: runLoopMode
target: self
selector: @selector(of_resolver:didResolveDomainName:
response:context:exception:)
context: delegate];
}
- (void)of_asyncResolveHost: (OFString *)host
recordClass: (of_dns_resource_record_class_t)recordClass
recordType: (of_dns_resource_record_type_t)recordType
runLoopMode: (of_run_loop_mode_t)runLoopMode
|
︙ | | | ︙ | |
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
|
exception = [OFResolveHostFailedException
exceptionWithHost: query->_host
recordClass: query->_recordClass
recordType: query->_recordType
error: OF_DNS_RESOLVER_ERROR_TIMEOUT];
callback(query->_target, query->_selector, self, query->_domainName,
nil, nil, nil, query->_context, exception);
}
- (bool)socket: (OFUDPSocket *)sock
didReceiveIntoBuffer: (void *)buffer_
length: (size_t)length
sender: (const of_socket_address_t *)sender
exception: (id)exception
{
unsigned char *buffer = buffer_;
OFDictionary *answerRecords = nil, *authorityRecords = nil;
OFDictionary *additionalRecords = nil;
OFNumber *ID;
OFDNSResolverQuery *query;
if (exception != nil)
return true;
if (length < 2)
|
|
>
|
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
|
exception = [OFResolveHostFailedException
exceptionWithHost: query->_host
recordClass: query->_recordClass
recordType: query->_recordType
error: OF_DNS_RESOLVER_ERROR_TIMEOUT];
callback(query->_target, query->_selector, self, query->_domainName,
nil, query->_context, exception);
}
- (bool)socket: (OFUDPSocket *)sock
didReceiveIntoBuffer: (void *)buffer_
length: (size_t)length
sender: (const of_socket_address_t *)sender
exception: (id)exception
{
unsigned char *buffer = buffer_;
OFDictionary *answerRecords = nil, *authorityRecords = nil;
OFDictionary *additionalRecords = nil;
OFDNSResponse *response = nil;
OFNumber *ID;
OFDNSResolverQuery *query;
if (exception != nil)
return true;
if (length < 2)
|
︙ | | | ︙ | |
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
|
}
answerRecords = parseSection(buffer, length, &i, numAnswers);
authorityRecords = parseSection(buffer, length, &i,
numAuthorityRecords);
additionalRecords = parseSection(buffer, length, &i,
numAdditionalRecords);
} @catch (id e) {
callback(query->_target, query->_selector, self,
query->_domainName, nil, nil, nil, query->_context, e);
return true;
}
callback(query->_target, query->_selector, self, query->_domainName,
answerRecords, authorityRecords, additionalRecords,
query->_context, nil);
return true;
}
- (void)asyncResolveSocketAddressesForHost: (OFString *)host
delegate: (id <OFDNSResolverDelegate>)delegate
{
|
>
>
>
>
|
<
|
|
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
|
}
answerRecords = parseSection(buffer, length, &i, numAnswers);
authorityRecords = parseSection(buffer, length, &i,
numAuthorityRecords);
additionalRecords = parseSection(buffer, length, &i,
numAdditionalRecords);
response = [OFDNSResponse
responseWithAnswerRecords: answerRecords
authorityRecords: authorityRecords
additionalRecords: additionalRecords];
} @catch (id e) {
callback(query->_target, query->_selector, self,
query->_domainName, nil, query->_context, e);
return true;
}
callback(query->_target, query->_selector, self, query->_domainName,
response, query->_context, nil);
return true;
}
- (void)asyncResolveSocketAddressesForHost: (OFString *)host
delegate: (id <OFDNSResolverDelegate>)delegate
{
|
︙ | | | ︙ | |
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
|
[self of_asyncResolveHost: host
recordClass: OF_DNS_RESOURCE_RECORD_CLASS_IN
recordType: OF_DNS_RESOURCE_RECORD_TYPE_AAAA
runLoopMode: runLoopMode
target: context
selector: @selector(resolver:
didResolveDomainName:
answerRecords:authorityRecords:
additionalRecords:context:
exception:)
context: recordTypeNumber];
}
#endif
if (addressFamily == OF_SOCKET_ADDRESS_FAMILY_IPV4 ||
addressFamily == OF_SOCKET_ADDRESS_FAMILY_ANY)
[self of_asyncResolveHost: host
recordClass: OF_DNS_RESOURCE_RECORD_CLASS_IN
recordType: OF_DNS_RESOURCE_RECORD_TYPE_A
runLoopMode: runLoopMode
target: context
selector: @selector(resolver:
didResolveDomainName:
answerRecords:authorityRecords:
additionalRecords:context:
exception:)
context: [OFNumber numberWithInt:
OF_DNS_RESOURCE_RECORD_TYPE_A]];
objc_autoreleasePoolPop(pool);
}
- (OFData *)resolveSocketAddressesForHost: (OFString *)host
|
<
<
|
<
<
|
|
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
|
[self of_asyncResolveHost: host
recordClass: OF_DNS_RESOURCE_RECORD_CLASS_IN
recordType: OF_DNS_RESOURCE_RECORD_TYPE_AAAA
runLoopMode: runLoopMode
target: context
selector: @selector(resolver:
didResolveDomainName:
response:context:exception:)
context: recordTypeNumber];
}
#endif
if (addressFamily == OF_SOCKET_ADDRESS_FAMILY_IPV4 ||
addressFamily == OF_SOCKET_ADDRESS_FAMILY_ANY)
[self of_asyncResolveHost: host
recordClass: OF_DNS_RESOURCE_RECORD_CLASS_IN
recordType: OF_DNS_RESOURCE_RECORD_TYPE_A
runLoopMode: runLoopMode
target: context
selector: @selector(resolver:
didResolveDomainName:
response:context:exception:)
context: [OFNumber numberWithInt:
OF_DNS_RESOURCE_RECORD_TYPE_A]];
objc_autoreleasePoolPop(pool);
}
- (OFData *)resolveSocketAddressesForHost: (OFString *)host
|
︙ | | | ︙ | |
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
|
exception = [OFResolveHostFailedException
exceptionWithHost: query->_host
recordClass: query->_recordClass
recordType: query->_recordType
error: OF_DNS_RESOLVER_ERROR_CANCELED];
callback(query->_target, query->_selector, self,
query->_domainName, nil, nil, nil, query->_context,
exception);
}
[_queries removeAllObjects];
objc_autoreleasePoolPop(pool);
}
@end
|
|
<
|
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
|
exception = [OFResolveHostFailedException
exceptionWithHost: query->_host
recordClass: query->_recordClass
recordType: query->_recordType
error: OF_DNS_RESOLVER_ERROR_CANCELED];
callback(query->_target, query->_selector, self,
query->_domainName, nil, query->_context, exception);
}
[_queries removeAllObjects];
objc_autoreleasePoolPop(pool);
}
@end
|