a.smali
.class public Lcom/subgraph/orchid/h/a;
.super Ljava/net/Socket;
.source "AndroidSocket.java"
# static fields
.field private static final logger:Ljava/util/logging/Logger;
# instance fields
.field private final bKr:Ljava/lang/reflect/Field;
.field private final bKs:Lcom/subgraph/orchid/h/c;
.field private bKt:Z
.field private final lock:Ljava/lang/Object;
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 11
const-class v0, Lcom/subgraph/orchid/h/a;
invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Ljava/util/logging/Logger;->getLogger(Ljava/lang/String;)Ljava/util/logging/Logger;
move-result-object v0
sput-object v0, Lcom/subgraph/orchid/h/a;->logger:Ljava/util/logging/Logger;
return-void
.end method
.method constructor <init>(Lcom/subgraph/orchid/h/c;)V
.registers 3
.prologue
.line 19
invoke-direct {p0, p1}, Ljava/net/Socket;-><init>(Ljava/net/SocketImpl;)V
.line 15
new-instance v0, Ljava/lang/Object;
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
iput-object v0, p0, Lcom/subgraph/orchid/h/a;->lock:Ljava/lang/Object;
.line 20
iput-object p1, p0, Lcom/subgraph/orchid/h/a;->bKs:Lcom/subgraph/orchid/h/c;
.line 21
const-string v0, "isConnected"
invoke-static {v0}, Lcom/subgraph/orchid/h/a;->getField(Ljava/lang/String;)Ljava/lang/reflect/Field;
move-result-object v0
iput-object v0, p0, Lcom/subgraph/orchid/h/a;->bKr:Ljava/lang/reflect/Field;
.line 22
return-void
.end method
.method private static getField(Ljava/lang/String;)Ljava/lang/reflect/Field;
.registers 6
.prologue
const/4 v1, 0x0
.line 58
:try_start_1
const-class v0, Ljava/net/Socket;
invoke-virtual {v0, p0}, Ljava/lang/Class;->getDeclaredField(Ljava/lang/String;)Ljava/lang/reflect/Field;
move-result-object v0
.line 59
const/4 v2, 0x1
invoke-virtual {v0, v2}, Ljava/lang/reflect/Field;->setAccessible(Z)V
:try_end_b
.catch Ljava/lang/NoSuchFieldException; {:try_start_1 .. :try_end_b} :catch_c
.catch Ljava/lang/SecurityException; {:try_start_1 .. :try_end_b} :catch_29
.line 66
:goto_b
return-object v0
.line 62
:catch_c
move-exception v0
sget-object v0, Lcom/subgraph/orchid/h/a;->logger:Ljava/util/logging/Logger;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Could not locate field \'"
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v2, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
const-string v3, "\' in Socket class, disabling Android reflection"
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-virtual {v0, v2}, Ljava/util/logging/Logger;->warning(Ljava/lang/String;)V
move-object v0, v1
.line 63
goto :goto_b
.line 64
:catch_29
move-exception v0
.line 65
sget-object v2, Lcom/subgraph/orchid/h/a;->logger:Ljava/util/logging/Logger;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "Reflection access to field \'"
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v3, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
const-string v4, "\' in Socket class not permitted."
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v0}, Ljava/lang/SecurityException;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/util/logging/Logger;->warning(Ljava/lang/String;)V
move-object v0, v1
.line 66
goto :goto_b
.end method
# virtual methods
.method public connect(Ljava/net/SocketAddress;)V
.registers 3
.prologue
.line 25
const/4 v0, 0x0
invoke-virtual {p0, p1, v0}, Lcom/subgraph/orchid/h/a;->connect(Ljava/net/SocketAddress;I)V
.line 26
return-void
.end method
.method public connect(Ljava/net/SocketAddress;I)V
.registers 8
.prologue
.line 29
iget-object v1, p0, Lcom/subgraph/orchid/h/a;->lock:Ljava/lang/Object;
monitor-enter v1
.line 30
:try_start_3
iget-boolean v0, p0, Lcom/subgraph/orchid/h/a;->bKt:Z
if-eqz v0, :cond_12
.line 31
new-instance v0, Ljava/net/SocketException;
const-string v2, "Already connected"
invoke-direct {v0, v2}, Ljava/net/SocketException;-><init>(Ljava/lang/String;)V
throw v0
.line 40
:catchall_f
move-exception v0
monitor-exit v1
:try_end_11
.catchall {:try_start_3 .. :try_end_11} :catchall_f
throw v0
.line 34
:cond_12
:try_start_12
iget-object v0, p0, Lcom/subgraph/orchid/h/a;->bKs:Lcom/subgraph/orchid/h/c;
invoke-virtual {v0, p1, p2}, Lcom/subgraph/orchid/h/c;->connect(Ljava/net/SocketAddress;I)V
.line 1044
const/4 v0, 0x1
iput-boolean v0, p0, Lcom/subgraph/orchid/h/a;->bKt:Z
:try_end_1a
.catch Ljava/io/IOException; {:try_start_12 .. :try_end_1a} :catch_40
.catchall {:try_start_12 .. :try_end_1a} :catchall_f
.line 1046
:try_start_1a
iget-object v0, p0, Lcom/subgraph/orchid/h/a;->bKr:Ljava/lang/reflect/Field;
if-eqz v0, :cond_24
.line 1047
iget-object v0, p0, Lcom/subgraph/orchid/h/a;->bKr:Ljava/lang/reflect/Field;
const/4 v2, 0x1
invoke-virtual {v0, p0, v2}, Ljava/lang/reflect/Field;->setBoolean(Ljava/lang/Object;Z)V
:try_end_24
.catch Ljava/lang/IllegalArgumentException; {:try_start_1a .. :try_end_24} :catch_26
.catch Ljava/lang/IllegalAccessException; {:try_start_1a .. :try_end_24} :catch_47
.catch Ljava/io/IOException; {:try_start_1a .. :try_end_24} :catch_40
.catchall {:try_start_1a .. :try_end_24} :catchall_f
.line 40
:cond_24
:goto_24
:try_start_24
monitor-exit v1
:try_end_25
.catchall {:try_start_24 .. :try_end_25} :catchall_f
return-void
.line 1049
:catch_26
move-exception v0
.line 1050
:try_start_27
sget-object v2, Lcom/subgraph/orchid/h/a;->logger:Ljava/util/logging/Logger;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "Illegal argument trying to reflect value into isConnected field of Socket : "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/lang/IllegalArgumentException;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/util/logging/Logger;->warning(Ljava/lang/String;)V
:try_end_3f
.catch Ljava/io/IOException; {:try_start_27 .. :try_end_3f} :catch_40
.catchall {:try_start_27 .. :try_end_3f} :catchall_f
goto :goto_24
.line 36
:catch_40
move-exception v0
.line 37
:try_start_41
iget-object v2, p0, Lcom/subgraph/orchid/h/a;->bKs:Lcom/subgraph/orchid/h/c;
invoke-virtual {v2}, Lcom/subgraph/orchid/h/c;->close()V
.line 38
throw v0
:try_end_47
.catchall {:try_start_41 .. :try_end_47} :catchall_f
.line 1051
:catch_47
move-exception v0
.line 1052
:try_start_48
sget-object v2, Lcom/subgraph/orchid/h/a;->logger:Ljava/util/logging/Logger;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "Illegal access trying to reflect value into isConnected field of Socket : "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/lang/IllegalAccessException;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/util/logging/Logger;->warning(Ljava/lang/String;)V
:try_end_60
.catch Ljava/io/IOException; {:try_start_48 .. :try_end_60} :catch_40
.catchall {:try_start_48 .. :try_end_60} :catchall_f
goto :goto_24
.end method