File tree Expand file tree Collapse file tree 2 files changed +17
-2
lines changed
Expand file tree Collapse file tree 2 files changed +17
-2
lines changed Original file line number Diff line number Diff line change @@ -355,6 +355,15 @@ - (void)checkWhetherCachedDnsValid{
355355 }
356356}
357357
358+ - (void )invalidNetworkAddressOfHost : (NSString *)host {
359+ if (host == nil || host.length == 0 ) {
360+ return ;
361+ }
362+ @synchronized (self) {
363+ [self .addressDictionary removeObjectForKey: host];
364+ }
365+ }
366+
358367- (void )clearDnsCache : (NSError *__autoreleasing _Nullable *)error {
359368 [self clearDnsMemoryCache ];
360369 [self clearDnsDiskCache: error];
@@ -366,6 +375,9 @@ - (NSString *)prefetchHostBySafeDns:(NSString *)host error:(NSError * __autorele
366375 if (host == nil ) {
367376 return nil ;
368377 }
378+
379+ [self invalidNetworkAddressOfHost: host];
380+
369381 NSError *err = nil ;
370382 NSArray *nextFetchHosts = @[host];
371383 nextFetchHosts = [self preFetchHosts: nextFetchHosts dns: self .customDns error: &err];
Original file line number Diff line number Diff line change 99#import " QNDefine.h"
1010#import " QNLogUtil.h"
1111#import " QNAsyncRun.h"
12+ #import " QNDnsPrefetch.h"
1213#import " QNUploadRequestState.h"
1314#import " QNHttpRegionRequest.h"
1415#import " QNConfiguration.h"
@@ -160,13 +161,15 @@ - (void)performRequest:(id <QNUploadServer>)server
160161 [self .requestMetrics addMetricsList: metrics];
161162
162163 BOOL hijacked = metrics.lastObject .isMaybeHijacked || metrics.lastObject .isForsureHijacked ;
163- if (hijacked) {
164+ BOOL isSafeDnsSource = kQNIsDnsSourceCustom (metrics.lastObject .syncDnsSource ) || kQNIsDnsSourceDoh (metrics.lastObject .syncDnsSource ) || kQNIsDnsSourceDnsPod (metrics.lastObject .syncDnsSource );
165+ BOOL hijackedAndNeedRetry = hijacked && isSafeDnsSource;
166+ if (hijackedAndNeedRetry) {
164167 [self .region updateIpListFormHost: server.host];
165168 }
166169
167170 if ((shouldRetry (responseInfo, response)
168171 && self.config .allowBackupHost
169- && responseInfo.couldRegionRetry ) || hijacked ) {
172+ && responseInfo.couldRegionRetry ) || hijackedAndNeedRetry ) {
170173
171174 id <QNUploadServer> newServer = [self getNextServer: responseInfo];
172175 if (newServer) {
You can’t perform that action at this time.
0 commit comments