a.smali
.class public Lcom/subgraph/orchid/circuits/a;
.super Ljava/lang/Object;
.source "CircuitBuildTask.java"
# interfaces
.implements Ljava/lang/Runnable;
# static fields
.field private static final logger:Ljava/util/logging/Logger;
# instance fields
.field private final bBE:Lcom/subgraph/orchid/circuits/b;
.field private final bBF:Lcom/subgraph/orchid/circuits/f;
.field private final bBG:Lcom/subgraph/orchid/circuits/d;
.field private bBH:Lcom/subgraph/orchid/g;
.field private final bBt:Lcom/subgraph/orchid/circuits/u;
.field private final bBu:Lcom/subgraph/orchid/h;
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 18
const-class v0, Lcom/subgraph/orchid/circuits/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/circuits/a;->logger:Ljava/util/logging/Logger;
return-void
.end method
.method public constructor <init>(Lcom/subgraph/orchid/circuits/b;Lcom/subgraph/orchid/h;Z)V
.registers 5
.prologue
.line 28
const/4 v0, 0x0
invoke-direct {p0, p1, p2, p3, v0}, Lcom/subgraph/orchid/circuits/a;-><init>(Lcom/subgraph/orchid/circuits/b;Lcom/subgraph/orchid/h;ZLcom/subgraph/orchid/circuits/u;)V
.line 29
return-void
.end method
.method public constructor <init>(Lcom/subgraph/orchid/circuits/b;Lcom/subgraph/orchid/h;ZLcom/subgraph/orchid/circuits/u;)V
.registers 7
.prologue
.line 31
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 25
const/4 v0, 0x0
iput-object v0, p0, Lcom/subgraph/orchid/circuits/a;->bBH:Lcom/subgraph/orchid/g;
.line 32
iput-object p1, p0, Lcom/subgraph/orchid/circuits/a;->bBE:Lcom/subgraph/orchid/circuits/b;
.line 33
iput-object p2, p0, Lcom/subgraph/orchid/circuits/a;->bBu:Lcom/subgraph/orchid/h;
.line 34
iput-object p4, p0, Lcom/subgraph/orchid/circuits/a;->bBt:Lcom/subgraph/orchid/circuits/u;
.line 1039
iget-object v0, p1, Lcom/subgraph/orchid/circuits/b;->bBF:Lcom/subgraph/orchid/circuits/f;
.line 35
iput-object v0, p0, Lcom/subgraph/orchid/circuits/a;->bBF:Lcom/subgraph/orchid/circuits/f;
.line 36
new-instance v0, Lcom/subgraph/orchid/circuits/d;
.line 2039
iget-object v1, p1, Lcom/subgraph/orchid/circuits/b;->bBF:Lcom/subgraph/orchid/circuits/f;
.line 36
invoke-direct {v0, v1, p3}, Lcom/subgraph/orchid/circuits/d;-><init>(Lcom/subgraph/orchid/circuits/f;Z)V
iput-object v0, p0, Lcom/subgraph/orchid/circuits/a;->bBG:Lcom/subgraph/orchid/circuits/d;
.line 37
return-void
.end method
.method private static a(Lcom/subgraph/orchid/circuits/b;)Ljava/lang/String;
.registers 6
.prologue
.line 71
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
.line 72
const-string v0, "["
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 8043
iget-object v0, p0, Lcom/subgraph/orchid/circuits/b;->bBK:Ljava/util/List;
.line 73
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_10
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_30
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/subgraph/orchid/v;
.line 74
invoke-virtual {v1}, Ljava/lang/StringBuilder;->length()I
move-result v3
const/4 v4, 0x1
if-le v3, v4, :cond_28
.line 75
const-string v3, ","
invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 76
:cond_28
invoke-interface {v0}, Lcom/subgraph/orchid/v;->JB()Ljava/lang/String;
move-result-object v0
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
goto :goto_10
.line 78
:cond_30
const-string v0, "]"
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 79
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method private e(Lcom/subgraph/orchid/v;)V
.registers 9
.prologue
const/4 v1, 0x0
.line 102
.line 8115
iget-object v0, p0, Lcom/subgraph/orchid/circuits/a;->bBt:Lcom/subgraph/orchid/circuits/u;
if-eqz v0, :cond_12
.line 8116
iget-object v0, p0, Lcom/subgraph/orchid/circuits/a;->bBE:Lcom/subgraph/orchid/circuits/b;
.line 9059
iget-boolean v0, v0, Lcom/subgraph/orchid/circuits/b;->bBJ:Z
.line 8116
if-eqz v0, :cond_6a
const/16 v0, 0xf
.line 8118
:goto_d
iget-object v2, p0, Lcom/subgraph/orchid/circuits/a;->bBt:Lcom/subgraph/orchid/circuits/u;
invoke-virtual {v2, v0}, Lcom/subgraph/orchid/circuits/u;->eJ(I)V
.line 103
:cond_12
iget-object v2, p0, Lcom/subgraph/orchid/circuits/a;->bBG:Lcom/subgraph/orchid/circuits/d;
.line 10038
sget-object v0, Lcom/subgraph/orchid/circuits/d;->logger:Ljava/util/logging/Logger;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "Creating \'fast\' to "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-virtual {v0, v3}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
.line 10039
new-instance v0, Lcom/subgraph/orchid/crypto/j;
invoke-direct {v0}, Lcom/subgraph/orchid/crypto/j;-><init>()V
.line 10045
iget-object v3, v2, Lcom/subgraph/orchid/circuits/d;->bBF:Lcom/subgraph/orchid/circuits/f;
invoke-virtual {v3}, Lcom/subgraph/orchid/circuits/f;->Ii()I
move-result v3
const/4 v4, 0x5
invoke-static {v3, v4}, Lcom/subgraph/orchid/circuits/a/a;->aJ(II)Lcom/subgraph/orchid/circuits/a/a;
move-result-object v3
.line 12017
iget-object v4, v0, Lcom/subgraph/orchid/crypto/j;->bFX:[B
iget-object v5, v0, Lcom/subgraph/orchid/crypto/j;->bFX:[B
array-length v5, v5
invoke-static {v4, v5}, Ljava/util/Arrays;->copyOf([BI)[B
move-result-object v4
.line 10046
invoke-interface {v3, v4}, Lcom/subgraph/orchid/b;->ai([B)V
.line 10047
iget-object v4, v2, Lcom/subgraph/orchid/circuits/d;->bBF:Lcom/subgraph/orchid/circuits/f;
.line 12199
iget-object v4, v4, Lcom/subgraph/orchid/circuits/f;->bCf:Lcom/subgraph/orchid/circuits/e;
invoke-virtual {v4, v3}, Lcom/subgraph/orchid/circuits/e;->d(Lcom/subgraph/orchid/b;)V
.line 13051
iget-object v3, v2, Lcom/subgraph/orchid/circuits/d;->bBF:Lcom/subgraph/orchid/circuits/f;
.line 13203
iget-object v3, v3, Lcom/subgraph/orchid/circuits/f;->bCf:Lcom/subgraph/orchid/circuits/e;
invoke-virtual {v3}, Lcom/subgraph/orchid/circuits/e;->KB()Lcom/subgraph/orchid/b;
move-result-object v3
.line 13052
if-nez v3, :cond_6d
.line 13053
new-instance v0, Lcom/subgraph/orchid/TorException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Timeout building circuit waiting for CREATE_FAST response from "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/subgraph/orchid/TorException;-><init>(Ljava/lang/String;)V
throw v0
.line 8116
:cond_6a
const/16 v0, 0x5a
goto :goto_d
.line 14060
:cond_6d
const/16 v4, 0x28
new-array v4, v4, [B
.line 14061
const/16 v5, 0x48
new-array v5, v5, [B
.line 14062
const/16 v6, 0x14
new-array v6, v6, [B
.line 14063
invoke-interface {v3, v4}, Lcom/subgraph/orchid/b;->ah([B)V
.line 14064
invoke-interface {v0, v4, v5, v6}, Lcom/subgraph/orchid/crypto/k;->b([B[B[B)Z
move-result v0
if-nez v0, :cond_a7
move-object v0, v1
.line 104
:goto_83
iget-object v1, p0, Lcom/subgraph/orchid/circuits/a;->bBE:Lcom/subgraph/orchid/circuits/b;
invoke-virtual {v1, v0}, Lcom/subgraph/orchid/circuits/b;->a(Lcom/subgraph/orchid/f;)V
.line 106
const/4 v0, 0x1
:goto_89
iget-object v1, p0, Lcom/subgraph/orchid/circuits/a;->bBE:Lcom/subgraph/orchid/circuits/b;
.line 15047
iget-object v1, v1, Lcom/subgraph/orchid/circuits/b;->bBK:Ljava/util/List;
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v1
.line 106
if-ge v0, v1, :cond_b1
.line 107
iget-object v1, p0, Lcom/subgraph/orchid/circuits/a;->bBG:Lcom/subgraph/orchid/circuits/d;
iget-object v2, p0, Lcom/subgraph/orchid/circuits/a;->bBE:Lcom/subgraph/orchid/circuits/b;
invoke-virtual {v2, v0}, Lcom/subgraph/orchid/circuits/b;->eF(I)Lcom/subgraph/orchid/v;
move-result-object v2
invoke-virtual {v1, v2}, Lcom/subgraph/orchid/circuits/d;->f(Lcom/subgraph/orchid/v;)Lcom/subgraph/orchid/f;
move-result-object v1
.line 108
iget-object v2, p0, Lcom/subgraph/orchid/circuits/a;->bBE:Lcom/subgraph/orchid/circuits/b;
invoke-virtual {v2, v1}, Lcom/subgraph/orchid/circuits/b;->a(Lcom/subgraph/orchid/f;)V
.line 106
add-int/lit8 v0, v0, 0x1
goto :goto_89
.line 15016
:cond_a7
invoke-static {p1, v1, v5, v6}, Lcom/subgraph/orchid/circuits/k;->a(Lcom/subgraph/orchid/v;Lcom/subgraph/orchid/f;[B[B)Lcom/subgraph/orchid/f;
move-result-object v0
.line 14069
iget-object v1, v2, Lcom/subgraph/orchid/circuits/d;->bBF:Lcom/subgraph/orchid/circuits/f;
invoke-virtual {v1, v0}, Lcom/subgraph/orchid/circuits/f;->c(Lcom/subgraph/orchid/f;)V
goto :goto_83
.line 110
:cond_b1
iget-object v0, p0, Lcom/subgraph/orchid/circuits/a;->bBE:Lcom/subgraph/orchid/circuits/b;
iget-object v1, p0, Lcom/subgraph/orchid/circuits/a;->bBF:Lcom/subgraph/orchid/circuits/f;
invoke-virtual {v0, v1}, Lcom/subgraph/orchid/circuits/b;->a(Lcom/subgraph/orchid/c;)V
.line 15123
iget-object v0, p0, Lcom/subgraph/orchid/circuits/a;->bBt:Lcom/subgraph/orchid/circuits/u;
if-eqz v0, :cond_c9
iget-object v0, p0, Lcom/subgraph/orchid/circuits/a;->bBE:Lcom/subgraph/orchid/circuits/b;
.line 16059
iget-boolean v0, v0, Lcom/subgraph/orchid/circuits/b;->bBJ:Z
.line 15123
if-nez v0, :cond_c9
.line 15124
iget-object v0, p0, Lcom/subgraph/orchid/circuits/a;->bBt:Lcom/subgraph/orchid/circuits/u;
const/16 v1, 0x64
invoke-virtual {v0, v1}, Lcom/subgraph/orchid/circuits/u;->eJ(I)V
.line 112
:cond_c9
return-void
.end method
.method private gn(Ljava/lang/String;)V
.registers 3
.prologue
.line 83
iget-object v0, p0, Lcom/subgraph/orchid/circuits/a;->bBE:Lcom/subgraph/orchid/circuits/b;
invoke-virtual {v0, p1}, Lcom/subgraph/orchid/circuits/b;->gn(Ljava/lang/String;)V
.line 84
iget-object v0, p0, Lcom/subgraph/orchid/circuits/a;->bBF:Lcom/subgraph/orchid/circuits/f;
invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/f;->KG()V
.line 85
return-void
.end method
.method private go(Ljava/lang/String;)V
.registers 4
.prologue
.line 88
iget-object v0, p0, Lcom/subgraph/orchid/circuits/a;->bBE:Lcom/subgraph/orchid/circuits/b;
invoke-virtual {v0, p1}, Lcom/subgraph/orchid/circuits/b;->go(Ljava/lang/String;)V
.line 89
iget-object v0, p0, Lcom/subgraph/orchid/circuits/a;->bBF:Lcom/subgraph/orchid/circuits/f;
invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/f;->KG()V
.line 90
iget-object v0, p0, Lcom/subgraph/orchid/circuits/a;->bBH:Lcom/subgraph/orchid/g;
if-eqz v0, :cond_15
.line 91
iget-object v0, p0, Lcom/subgraph/orchid/circuits/a;->bBH:Lcom/subgraph/orchid/g;
iget-object v1, p0, Lcom/subgraph/orchid/circuits/a;->bBF:Lcom/subgraph/orchid/circuits/f;
invoke-interface {v0, v1}, Lcom/subgraph/orchid/g;->b(Lcom/subgraph/orchid/c;)V
.line 93
:cond_15
return-void
.end method
# virtual methods
.method public run()V
.registers 8
.prologue
const/4 v0, 0x1
const/4 v1, 0x0
.line 40
const/4 v2, 0x0
.line 42
:try_start_3
iget-object v4, p0, Lcom/subgraph/orchid/circuits/a;->bBF:Lcom/subgraph/orchid/circuits/f;
.line 2132
iget-object v3, v4, Lcom/subgraph/orchid/circuits/f;->bCe:Lcom/subgraph/orchid/circuits/CircuitStatus;
.line 3089
iget-object v3, v3, Lcom/subgraph/orchid/circuits/CircuitStatus;->bCH:Lcom/subgraph/orchid/circuits/CircuitStatus$CircuitState;
sget-object v5, Lcom/subgraph/orchid/circuits/CircuitStatus$CircuitState;->UNCONNECTED:Lcom/subgraph/orchid/circuits/CircuitStatus$CircuitState;
if-ne v3, v5, :cond_2d
move v3, v0
.line 2132
:goto_e
if-nez v3, :cond_2f
.line 2133
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "Can only connect UNCONNECTED circuits"
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_18
.catch Lcom/subgraph/orchid/ConnectionTimeoutException; {:try_start_3 .. :try_end_18} :catch_18
.catch Lcom/subgraph/orchid/ConnectionFailedException; {:try_start_3 .. :try_end_18} :catch_6b
.catch Lcom/subgraph/orchid/ConnectionHandshakeException; {:try_start_3 .. :try_end_18} :catch_90
.catch Ljava/lang/InterruptedException; {:try_start_3 .. :try_end_18} :catch_bc
.catch Lcom/subgraph/orchid/circuits/path/PathSelectionFailedException; {:try_start_3 .. :try_end_18} :catch_148
.catch Lcom/subgraph/orchid/TorException; {:try_start_3 .. :try_end_18} :catch_152
.catch Ljava/lang/Exception; {:try_start_3 .. :try_end_18} :catch_15c
.line 52
:catch_18
move-exception v0
move-object v0, v2
:goto_1a
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Timeout connecting to "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {p0, v0}, Lcom/subgraph/orchid/circuits/a;->gn(Ljava/lang/String;)V
.line 68
:goto_2c
return-void
:cond_2d
move v3, v1
.line 3089
goto :goto_e
.line 2135
:cond_2f
:try_start_2f
iget-object v3, v4, Lcom/subgraph/orchid/circuits/f;->bCe:Lcom/subgraph/orchid/circuits/CircuitStatus;
invoke-virtual {v3}, Lcom/subgraph/orchid/circuits/CircuitStatus;->KT()V
.line 2136
iget-object v3, v4, Lcom/subgraph/orchid/circuits/f;->bCe:Lcom/subgraph/orchid/circuits/CircuitStatus;
.line 4065
sget-object v5, Lcom/subgraph/orchid/circuits/CircuitStatus$CircuitState;->BUILDING:Lcom/subgraph/orchid/circuits/CircuitStatus$CircuitState;
iput-object v5, v3, Lcom/subgraph/orchid/circuits/CircuitStatus;->bCH:Lcom/subgraph/orchid/circuits/CircuitStatus$CircuitState;
.line 2137
iget-object v3, v4, Lcom/subgraph/orchid/circuits/f;->bBL:Lcom/subgraph/orchid/circuits/g;
.line 4127
iget-object v5, v3, Lcom/subgraph/orchid/circuits/g;->bCg:Ljava/util/Set;
monitor-enter v5
:try_end_3f
.catch Lcom/subgraph/orchid/ConnectionTimeoutException; {:try_start_2f .. :try_end_3f} :catch_18
.catch Lcom/subgraph/orchid/ConnectionFailedException; {:try_start_2f .. :try_end_3f} :catch_6b
.catch Lcom/subgraph/orchid/ConnectionHandshakeException; {:try_start_2f .. :try_end_3f} :catch_90
.catch Ljava/lang/InterruptedException; {:try_start_2f .. :try_end_3f} :catch_bc
.catch Lcom/subgraph/orchid/circuits/path/PathSelectionFailedException; {:try_start_2f .. :try_end_3f} :catch_148
.catch Lcom/subgraph/orchid/TorException; {:try_start_2f .. :try_end_3f} :catch_152
.catch Ljava/lang/Exception; {:try_start_2f .. :try_end_3f} :catch_15c
.line 4128
:try_start_3f
iget-object v6, v3, Lcom/subgraph/orchid/circuits/g;->bCg:Ljava/util/Set;
invoke-interface {v6, v4}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
.line 4129
iget-object v6, v3, Lcom/subgraph/orchid/circuits/g;->bCg:Ljava/util/Set;
invoke-virtual {v6}, Ljava/lang/Object;->notifyAll()V
.line 4130
monitor-exit v5
:try_end_4a
.catchall {:try_start_3f .. :try_end_4a} :catchall_8d
.line 4133
:try_start_4a
iget-object v5, v3, Lcom/subgraph/orchid/circuits/g;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v5}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
:try_end_4f
.catch Lcom/subgraph/orchid/ConnectionTimeoutException; {:try_start_4a .. :try_end_4f} :catch_18
.catch Lcom/subgraph/orchid/ConnectionFailedException; {:try_start_4a .. :try_end_4f} :catch_6b
.catch Lcom/subgraph/orchid/ConnectionHandshakeException; {:try_start_4a .. :try_end_4f} :catch_90
.catch Ljava/lang/InterruptedException; {:try_start_4a .. :try_end_4f} :catch_bc
.catch Lcom/subgraph/orchid/circuits/path/PathSelectionFailedException; {:try_start_4a .. :try_end_4f} :catch_148
.catch Lcom/subgraph/orchid/TorException; {:try_start_4a .. :try_end_4f} :catch_152
.catch Ljava/lang/Exception; {:try_start_4a .. :try_end_4f} :catch_15c
.line 4135
:try_start_4f
iget-boolean v5, v3, Lcom/subgraph/orchid/circuits/g;->bCp:Z
:try_end_51
.catchall {:try_start_4f .. :try_end_51} :catchall_b5
if-nez v5, :cond_b3
.line 4137
:goto_53
:try_start_53
iget-object v1, v3, Lcom/subgraph/orchid/circuits/g;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4140
if-eqz v0, :cond_5d
.line 4142
invoke-virtual {v4}, Lcom/subgraph/orchid/circuits/f;->KE()V
.line 43
:cond_5d
iget-object v0, p0, Lcom/subgraph/orchid/circuits/a;->bBE:Lcom/subgraph/orchid/circuits/b;
.line 5031
iget-object v1, v0, Lcom/subgraph/orchid/circuits/b;->bBF:Lcom/subgraph/orchid/circuits/f;
instance-of v1, v1, Lcom/subgraph/orchid/circuits/f;
if-nez v1, :cond_cb
.line 5032
new-instance v0, Ljava/lang/IllegalArgumentException;
invoke-direct {v0}, Ljava/lang/IllegalArgumentException;-><init>()V
throw v0
:try_end_6b
.catch Lcom/subgraph/orchid/ConnectionTimeoutException; {:try_start_53 .. :try_end_6b} :catch_18
.catch Lcom/subgraph/orchid/ConnectionFailedException; {:try_start_53 .. :try_end_6b} :catch_6b
.catch Lcom/subgraph/orchid/ConnectionHandshakeException; {:try_start_53 .. :try_end_6b} :catch_90
.catch Ljava/lang/InterruptedException; {:try_start_53 .. :try_end_6b} :catch_bc
.catch Lcom/subgraph/orchid/circuits/path/PathSelectionFailedException; {:try_start_53 .. :try_end_6b} :catch_148
.catch Lcom/subgraph/orchid/TorException; {:try_start_53 .. :try_end_6b} :catch_152
.catch Ljava/lang/Exception; {:try_start_53 .. :try_end_6b} :catch_15c
.line 53
:catch_6b
move-exception v0
.line 54
:goto_6c
new-instance v1, Ljava/lang/StringBuilder;
const-string v3, "Connection failed to "
invoke-direct {v1, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " : "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v0}, Lcom/subgraph/orchid/ConnectionFailedException;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-virtual {v1, 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-direct {p0, v0}, Lcom/subgraph/orchid/circuits/a;->gn(Ljava/lang/String;)V
goto :goto_2c
.line 4130
:catchall_8d
move-exception v0
:try_start_8e
monitor-exit v5
:try_end_8f
.catchall {:try_start_8e .. :try_end_8f} :catchall_8d
:try_start_8f
throw v0
:try_end_90
.catch Lcom/subgraph/orchid/ConnectionTimeoutException; {:try_start_8f .. :try_end_90} :catch_18
.catch Lcom/subgraph/orchid/ConnectionFailedException; {:try_start_8f .. :try_end_90} :catch_6b
.catch Lcom/subgraph/orchid/ConnectionHandshakeException; {:try_start_8f .. :try_end_90} :catch_90
.catch Ljava/lang/InterruptedException; {:try_start_8f .. :try_end_90} :catch_bc
.catch Lcom/subgraph/orchid/circuits/path/PathSelectionFailedException; {:try_start_8f .. :try_end_90} :catch_148
.catch Lcom/subgraph/orchid/TorException; {:try_start_8f .. :try_end_90} :catch_152
.catch Ljava/lang/Exception; {:try_start_8f .. :try_end_90} :catch_15c
.line 55
:catch_90
move-exception v0
.line 56
:goto_91
new-instance v1, Ljava/lang/StringBuilder;
const-string v3, "Handshake error connecting to "
invoke-direct {v1, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " : "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v0}, Lcom/subgraph/orchid/ConnectionHandshakeException;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-virtual {v1, 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-direct {p0, v0}, Lcom/subgraph/orchid/circuits/a;->gn(Ljava/lang/String;)V
goto/16 :goto_2c
:cond_b3
move v0, v1
.line 4135
goto :goto_53
.line 4137
:catchall_b5
move-exception v0
:try_start_b6
iget-object v1, v3, Lcom/subgraph/orchid/circuits/g;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
:try_end_bc
.catch Lcom/subgraph/orchid/ConnectionTimeoutException; {:try_start_b6 .. :try_end_bc} :catch_18
.catch Lcom/subgraph/orchid/ConnectionFailedException; {:try_start_b6 .. :try_end_bc} :catch_6b
.catch Lcom/subgraph/orchid/ConnectionHandshakeException; {:try_start_b6 .. :try_end_bc} :catch_90
.catch Ljava/lang/InterruptedException; {:try_start_b6 .. :try_end_bc} :catch_bc
.catch Lcom/subgraph/orchid/circuits/path/PathSelectionFailedException; {:try_start_b6 .. :try_end_bc} :catch_148
.catch Lcom/subgraph/orchid/TorException; {:try_start_b6 .. :try_end_bc} :catch_152
.catch Ljava/lang/Exception; {:try_start_b6 .. :try_end_bc} :catch_15c
.line 58
:catch_bc
move-exception v0
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Thread;->interrupt()V
.line 59
const-string v0, "Circuit building thread interrupted"
invoke-direct {p0, v0}, Lcom/subgraph/orchid/circuits/a;->go(Ljava/lang/String;)V
goto/16 :goto_2c
.line 5034
:cond_cb
:try_start_cb
iget-object v1, v0, Lcom/subgraph/orchid/circuits/b;->bBF:Lcom/subgraph/orchid/circuits/f;
iget-object v3, v0, Lcom/subgraph/orchid/circuits/b;->pathChooser:Lcom/subgraph/orchid/circuits/path/d;
invoke-virtual {v1, v3}, Lcom/subgraph/orchid/circuits/f;->a(Lcom/subgraph/orchid/circuits/path/d;)Ljava/util/List;
move-result-object v1
iput-object v1, v0, Lcom/subgraph/orchid/circuits/b;->bBK:Ljava/util/List;
.line 44
sget-object v0, Lcom/subgraph/orchid/circuits/a;->logger:Ljava/util/logging/Logger;
sget-object v1, Ljava/util/logging/Level;->FINE:Ljava/util/logging/Level;
invoke-virtual {v0, v1}, Ljava/util/logging/Logger;->isLoggable(Ljava/util/logging/Level;)Z
move-result v0
if-eqz v0, :cond_f9
.line 45
sget-object v0, Lcom/subgraph/orchid/circuits/a;->logger:Ljava/util/logging/Logger;
new-instance v1, Ljava/lang/StringBuilder;
const-string v3, "Opening a new circuit to "
invoke-direct {v1, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v3, p0, Lcom/subgraph/orchid/circuits/a;->bBE:Lcom/subgraph/orchid/circuits/b;
invoke-static {v3}, Lcom/subgraph/orchid/circuits/a;->a(Lcom/subgraph/orchid/circuits/b;)Ljava/lang/String;
move-result-object v3
invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
.line 47
:cond_f9
iget-object v0, p0, Lcom/subgraph/orchid/circuits/a;->bBE:Lcom/subgraph/orchid/circuits/b;
const/4 v1, 0x0
invoke-virtual {v0, v1}, Lcom/subgraph/orchid/circuits/b;->eF(I)Lcom/subgraph/orchid/v;
:try_end_ff
.catch Lcom/subgraph/orchid/ConnectionTimeoutException; {:try_start_cb .. :try_end_ff} :catch_18
.catch Lcom/subgraph/orchid/ConnectionFailedException; {:try_start_cb .. :try_end_ff} :catch_6b
.catch Lcom/subgraph/orchid/ConnectionHandshakeException; {:try_start_cb .. :try_end_ff} :catch_90
.catch Ljava/lang/InterruptedException; {:try_start_cb .. :try_end_ff} :catch_bc
.catch Lcom/subgraph/orchid/circuits/path/PathSelectionFailedException; {:try_start_cb .. :try_end_ff} :catch_148
.catch Lcom/subgraph/orchid/TorException; {:try_start_cb .. :try_end_ff} :catch_152
.catch Ljava/lang/Exception; {:try_start_cb .. :try_end_ff} :catch_15c
move-result-object v0
.line 5096
:try_start_100
iget-object v1, p0, Lcom/subgraph/orchid/circuits/a;->bBu:Lcom/subgraph/orchid/h;
iget-object v2, p0, Lcom/subgraph/orchid/circuits/a;->bBE:Lcom/subgraph/orchid/circuits/b;
.line 6059
iget-boolean v2, v2, Lcom/subgraph/orchid/circuits/b;->bBJ:Z
.line 5096
invoke-interface {v1, v0, v2}, Lcom/subgraph/orchid/h;->a(Lcom/subgraph/orchid/v;Z)Lcom/subgraph/orchid/g;
move-result-object v1
iput-object v1, p0, Lcom/subgraph/orchid/circuits/a;->bBH:Lcom/subgraph/orchid/g;
.line 5097
iget-object v1, p0, Lcom/subgraph/orchid/circuits/a;->bBF:Lcom/subgraph/orchid/circuits/f;
iget-object v2, p0, Lcom/subgraph/orchid/circuits/a;->bBH:Lcom/subgraph/orchid/g;
.line 6090
iget-object v3, v1, Lcom/subgraph/orchid/circuits/f;->bCf:Lcom/subgraph/orchid/circuits/e;
if-eqz v3, :cond_11f
.line 6091
new-instance v1, Ljava/lang/IllegalStateException;
const-string v2, "Circuit already bound to a connection"
invoke-direct {v1, v2}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v1
.line 52
:catch_11c
move-exception v1
goto/16 :goto_1a
.line 6093
:cond_11f
invoke-interface {v2, v1}, Lcom/subgraph/orchid/g;->c(Lcom/subgraph/orchid/c;)I
move-result v3
.line 6094
new-instance v4, Lcom/subgraph/orchid/circuits/e;
invoke-direct {v4, v1, v2, v3}, Lcom/subgraph/orchid/circuits/e;-><init>(Lcom/subgraph/orchid/circuits/f;Lcom/subgraph/orchid/g;I)V
iput-object v4, v1, Lcom/subgraph/orchid/circuits/f;->bCf:Lcom/subgraph/orchid/circuits/e;
.line 5098
iget-object v1, p0, Lcom/subgraph/orchid/circuits/a;->bBE:Lcom/subgraph/orchid/circuits/b;
iget-object v2, p0, Lcom/subgraph/orchid/circuits/a;->bBH:Lcom/subgraph/orchid/g;
invoke-virtual {v1, v2}, Lcom/subgraph/orchid/circuits/b;->a(Lcom/subgraph/orchid/g;)V
.line 49
invoke-direct {p0, v0}, Lcom/subgraph/orchid/circuits/a;->e(Lcom/subgraph/orchid/v;)V
.line 50
iget-object v1, p0, Lcom/subgraph/orchid/circuits/a;->bBF:Lcom/subgraph/orchid/circuits/f;
.line 6146
iget-object v2, v1, Lcom/subgraph/orchid/circuits/f;->bCe:Lcom/subgraph/orchid/circuits/CircuitStatus;
.line 7073
sget-object v3, Lcom/subgraph/orchid/circuits/CircuitStatus$CircuitState;->OPEN:Lcom/subgraph/orchid/circuits/CircuitStatus$CircuitState;
iput-object v3, v2, Lcom/subgraph/orchid/circuits/CircuitStatus;->bCH:Lcom/subgraph/orchid/circuits/CircuitStatus$CircuitState;
.line 6147
iget-object v1, v1, Lcom/subgraph/orchid/circuits/f;->bCe:Lcom/subgraph/orchid/circuits/CircuitStatus;
invoke-virtual {v1}, Lcom/subgraph/orchid/circuits/CircuitStatus;->KT()V
:try_end_141
.catch Lcom/subgraph/orchid/ConnectionTimeoutException; {:try_start_100 .. :try_end_141} :catch_11c
.catch Lcom/subgraph/orchid/ConnectionFailedException; {:try_start_100 .. :try_end_141} :catch_143
.catch Lcom/subgraph/orchid/ConnectionHandshakeException; {:try_start_100 .. :try_end_141} :catch_187
.catch Ljava/lang/InterruptedException; {:try_start_100 .. :try_end_141} :catch_bc
.catch Lcom/subgraph/orchid/circuits/path/PathSelectionFailedException; {:try_start_100 .. :try_end_141} :catch_148
.catch Lcom/subgraph/orchid/TorException; {:try_start_100 .. :try_end_141} :catch_152
.catch Ljava/lang/Exception; {:try_start_100 .. :try_end_141} :catch_15c
goto/16 :goto_2c
.line 53
:catch_143
move-exception v1
move-object v2, v0
move-object v0, v1
goto/16 :goto_6c
.line 60
:catch_148
move-exception v0
.line 61
invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/path/PathSelectionFailedException;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-direct {p0, v0}, Lcom/subgraph/orchid/circuits/a;->go(Ljava/lang/String;)V
goto/16 :goto_2c
.line 62
:catch_152
move-exception v0
.line 63
invoke-virtual {v0}, Lcom/subgraph/orchid/TorException;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-direct {p0, v0}, Lcom/subgraph/orchid/circuits/a;->go(Ljava/lang/String;)V
goto/16 :goto_2c
.line 64
:catch_15c
move-exception v0
.line 65
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Unexpected exception: "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {p0, v1}, Lcom/subgraph/orchid/circuits/a;->go(Ljava/lang/String;)V
.line 66
sget-object v1, Lcom/subgraph/orchid/circuits/a;->logger:Ljava/util/logging/Logger;
sget-object v2, Ljava/util/logging/Level;->WARNING:Ljava/util/logging/Level;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "Unexpected exception while building circuit: "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-virtual {v1, v2, v3, v0}, Ljava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
goto/16 :goto_2c
.line 55
:catch_187
move-exception v1
move-object v2, v0
move-object v0, v1
goto/16 :goto_91
.end method