DohResolver.smali
.class public Lcom/qiniu/android/dns/dns/DohResolver;
.super Lcom/qiniu/android/dns/dns/DnsResolver;
.source "DohResolver.java"
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(Ljava/lang/String;)V
.registers 2
.param p1, "server" # Ljava/lang/String;
.line 17
invoke-direct {p0, p1}, Lcom/qiniu/android/dns/dns/DnsResolver;-><init>(Ljava/lang/String;)V
.line 18
return-void
.end method
.method public constructor <init>(Ljava/lang/String;I)V
.registers 3
.param p1, "server" # Ljava/lang/String;
.param p2, "timeout" # I
.line 21
invoke-direct {p0, p1, p2}, Lcom/qiniu/android/dns/dns/DnsResolver;-><init>(Ljava/lang/String;I)V
.line 22
return-void
.end method
.method public constructor <init>(Ljava/lang/String;II)V
.registers 4
.param p1, "server" # Ljava/lang/String;
.param p2, "recordType" # I
.param p3, "timeout" # I
.line 25
invoke-direct {p0, p1, p2, p3}, Lcom/qiniu/android/dns/dns/DnsResolver;-><init>(Ljava/lang/String;II)V
.line 26
return-void
.end method
.method public constructor <init>([Ljava/lang/String;II)V
.registers 4
.param p1, "servers" # [Ljava/lang/String;
.param p2, "recordType" # I
.param p3, "timeout" # I
.line 29
invoke-direct {p0, p1, p2, p3}, Lcom/qiniu/android/dns/dns/DnsResolver;-><init>([Ljava/lang/String;II)V
.line 30
return-void
.end method
.method public constructor <init>([Ljava/lang/String;IILjava/util/concurrent/ExecutorService;)V
.registers 5
.param p1, "servers" # [Ljava/lang/String;
.param p2, "recordType" # I
.param p3, "timeout" # I
.param p4, "executorService" # Ljava/util/concurrent/ExecutorService;
.line 33
invoke-direct {p0, p1, p2, p3, p4}, Lcom/qiniu/android/dns/dns/DnsResolver;-><init>([Ljava/lang/String;IILjava/util/concurrent/ExecutorService;)V
.line 34
return-void
.end method
# virtual methods
.method request(Lcom/qiniu/android/dns/dns/DnsResolver$RequestCanceller;Ljava/lang/String;Ljava/lang/String;I)Lcom/qiniu/android/dns/dns/DnsResponse;
.registers 25
.param p1, "canceller" # Lcom/qiniu/android/dns/dns/DnsResolver$RequestCanceller;
.param p2, "server" # Ljava/lang/String;
.param p3, "host" # Ljava/lang/String;
.param p4, "recordType" # I
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 38
move-object/from16 v0, p0
move-object/from16 v1, p2
invoke-static {}, Ljava/lang/Math;->random()D
move-result-wide v2
.line 39
.local v2, "d":D
const-wide v4, 0x40efffe000000000L # 65535.0
mul-double v4, v4, v2
double-to-int v4, v4
int-to-short v4, v4
.line 40
.local v4, "messageId":S
new-instance v5, Lcom/qiniu/android/dns/dns/DnsRequest;
move-object/from16 v6, p3
move/from16 v7, p4
invoke-direct {v5, v4, v7, v6}, Lcom/qiniu/android/dns/dns/DnsRequest;-><init>(SILjava/lang/String;)V
.line 41
.local v5, "request":Lcom/qiniu/android/dns/dns/DnsRequest;
invoke-virtual {v5}, Lcom/qiniu/android/dns/dns/DnsRequest;->toDnsQuestionData()[B
move-result-object v8
.line 43
.local v8, "requestData":[B
new-instance v9, Ljava/net/URL;
invoke-direct {v9, v1}, Ljava/net/URL;-><init>(Ljava/lang/String;)V
invoke-virtual {v9}, Ljava/net/URL;->openConnection()Ljava/net/URLConnection;
move-result-object v9
check-cast v9, Ljavax/net/ssl/HttpsURLConnection;
.line 44
.local v9, "httpConn":Ljavax/net/ssl/HttpsURLConnection;
const/16 v10, 0xbb8
invoke-virtual {v9, v10}, Ljavax/net/ssl/HttpsURLConnection;->setConnectTimeout(I)V
.line 45
iget v10, v0, Lcom/qiniu/android/dns/dns/DohResolver;->timeout:I
mul-int/lit16 v10, v10, 0x3e8
invoke-virtual {v9, v10}, Ljavax/net/ssl/HttpsURLConnection;->setReadTimeout(I)V
.line 46
const/4 v10, 0x1
invoke-virtual {v9, v10}, Ljavax/net/ssl/HttpsURLConnection;->setDoOutput(Z)V
.line 47
const-string v10, "POST"
invoke-virtual {v9, v10}, Ljavax/net/ssl/HttpsURLConnection;->setRequestMethod(Ljava/lang/String;)V
.line 48
const-string v10, "application/dns-message"
const-string v11, "Content-Type"
invoke-virtual {v9, v11, v10}, Ljavax/net/ssl/HttpsURLConnection;->setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V
.line 49
const-string v11, "Accept"
invoke-virtual {v9, v11, v10}, Ljavax/net/ssl/HttpsURLConnection;->setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V
.line 50
const-string v10, "Accept-Encoding"
const-string v11, ""
invoke-virtual {v9, v10, v11}, Ljavax/net/ssl/HttpsURLConnection;->setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V
.line 51
const-string v10, "User-Agent"
const-string v11, "Dalvik/2.1.0"
invoke-virtual {v9, v10, v11}, Ljavax/net/ssl/HttpsURLConnection;->setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V
.line 53
new-instance v10, Ljava/io/DataOutputStream;
invoke-virtual {v9}, Ljavax/net/ssl/HttpsURLConnection;->getOutputStream()Ljava/io/OutputStream;
move-result-object v11
invoke-direct {v10, v11}, Ljava/io/DataOutputStream;-><init>(Ljava/io/OutputStream;)V
.line 54
.local v10, "bodyStream":Ljava/io/DataOutputStream;
move-object v11, v9
.line 55
.local v11, "finalConnection":Ljavax/net/ssl/HttpsURLConnection;
new-instance v12, Lcom/qiniu/android/dns/dns/DohResolver$1;
invoke-direct {v12, v0, v11, v10}, Lcom/qiniu/android/dns/dns/DohResolver$1;-><init>(Lcom/qiniu/android/dns/dns/DohResolver;Ljavax/net/ssl/HttpsURLConnection;Ljava/io/DataOutputStream;)V
move-object/from16 v13, p1
invoke-virtual {v13, v12}, Lcom/qiniu/android/dns/dns/DnsResolver$RequestCanceller;->addCancelAction(Ljava/lang/Runnable;)V
.line 70
invoke-virtual {v10, v8}, Ljava/io/DataOutputStream;->write([B)V
.line 71
invoke-virtual {v10}, Ljava/io/DataOutputStream;->close()V
.line 73
invoke-virtual {v9}, Ljavax/net/ssl/HttpsURLConnection;->getResponseCode()I
move-result v12
.line 74
.local v12, "responseCode":I
const/4 v14, 0x0
const/16 v15, 0xc8
if-eq v12, v15, :cond_7c
.line 75
return-object v14
.line 78
:cond_7c
invoke-virtual {v9}, Ljavax/net/ssl/HttpsURLConnection;->getContentLength()I
move-result v15
.line 79
.local v15, "length":I
if-lez v15, :cond_a6
const/high16 v14, 0x100000
if-le v15, v14, :cond_8b
move-wide/from16 v18, v2
const/16 v16, 0x0
goto :goto_aa
.line 82
:cond_8b
invoke-virtual {v9}, Ljavax/net/ssl/HttpsURLConnection;->getInputStream()Ljava/io/InputStream;
move-result-object v14
.line 83
.local v14, "is":Ljava/io/InputStream;
new-array v0, v15, [B
.line 84
.local v0, "responseData":[B
invoke-virtual {v14, v0}, Ljava/io/InputStream;->read([B)I
move-result v17
.line 85
.local v17, "read":I
invoke-virtual {v14}, Ljava/io/InputStream;->close()V
.line 86
if-gtz v17, :cond_9d
.line 87
const/16 v16, 0x0
return-object v16
.line 90
:cond_9d
move-wide/from16 v18, v2
.end local v2 # "d":D
.local v18, "d":D
new-instance v2, Lcom/qiniu/android/dns/dns/DnsResponse;
const/4 v3, 0x5
invoke-direct {v2, v1, v3, v5, v0}, Lcom/qiniu/android/dns/dns/DnsResponse;-><init>(Ljava/lang/String;ILcom/qiniu/android/dns/dns/DnsRequest;[B)V
return-object v2
.line 79
.end local v0 # "responseData":[B
.end local v14 # "is":Ljava/io/InputStream;
.end local v17 # "read":I
.end local v18 # "d":D
.restart local v2 # "d":D
:cond_a6
move-wide/from16 v18, v2
move-object/from16 v16, v14
.line 80
.end local v2 # "d":D
.restart local v18 # "d":D
:goto_aa
return-object v16
.end method