Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.blizzard.wow.net.session; class Session {/*
- .class public Lcom/blizzard/wow/net/session/Session;
- .super Ljava/lang/Object;
- .source "Session.java"
- # interfaces
- .implements Lcom/blizzard/wow/net/protocol/ProtocolConnection$OnConnectionListener;
- .implements Lcom/blizzard/wow/net/protocol/ProtocolConnection$OnRequestSentListener;
- .implements Lcom/blizzard/wow/net/protocol/ProtocolConnection$OnResponseReceivedListener;
- # annotations
- .annotation system Ldalvik/annotation/MemberClasses;
- value = {
- Lcom/blizzard/wow/net/session/Session$Error;,
- Lcom/blizzard/wow/net/session/Session$HardLoginCallback;,
- Lcom/blizzard/wow/net/session/Session$TickTimerTask;
- }
- .end annotation
- # static fields
- .field private static CONN_OPEN_ERROR:Lcom/blizzard/wow/net/session/Session$Error; = null
- .field private static LOGIN_TIMEOUT_ERROR:Lcom/blizzard/wow/net/session/Session$Error; = null
- .field private static SESSION_AUTH_ERROR:Lcom/blizzard/wow/net/session/Session$Error; = null
- .field public static final STATE_CLOSED:I = 0x1000000
- .field public static final STATE_CLOSING:I = 0x1000001
- .field public static final STATE_CONN_CLOSING:I = 0x2000001
- .field public static final STATE_CONN_ESTABLISHED:I = 0x2000002
- .field public static final STATE_CONN_OPENING:I = 0x2000000
- .field public static final STATE_ESTABLISHED:I = 0x4000000
- .field public static final STATE_HARD_LOGIN_1:I = 0x4000001
- .field public static final STATE_HARD_LOGIN_2:I = 0x4000003
- .field public static final STATE_HARD_LOGIN_AUTH:I = 0x4000002
- .field public static final STATE_LOGIN:I = 0x2000007
- .field public static final STATE_LOGIN_AUTHENTICATE_1:I = 0x2000004
- .field public static final STATE_LOGIN_AUTHENTICATE_2:I = 0x2000005
- .field public static final STATE_LOGIN_RECONNECT_1:I = 0x2000006
- .field public static final STATE_LOGIN_RETRY:I = 0x2000003
- .field private static final STATE_MASK_CLOSED:I = 0x1000000
- .field private static final STATE_MASK_ESTABLISHED:I = 0x4000000
- .field private static final STATE_MASK_LOGIN:I = 0x2000000
- .field static final TAG:Ljava/lang/String; = null
- .field public static final TICK_INTERVAL:I = 0x1388
- # instance fields
- .field account:Lcom/blizzard/wow/user/Account;
- .field private clientSalt:[B
- .field conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- .field private volatile connectionTimeout:J
- .field volatile counter:B
- .field hardLoginCallbackRef:Ljava/lang/ref/Reference;
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "Ljava/lang/ref/Reference",
- "<",
- "Lcom/blizzard/wow/net/session/Session$HardLoginCallback;",
- ">;"
- }
- .end annotation
- .end field
- .field hardLoginClientProof:[B
- .field lastError:Lcom/blizzard/wow/net/session/Session$Error;
- .field listeners:Ljava/util/ArrayList;
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "Ljava/util/ArrayList",
- "<",
- "Ljava/lang/ref/Reference",
- "<+",
- "Lcom/blizzard/wow/net/session/SessionListener;",
- ">;>;"
- }
- .end annotation
- .end field
- .field listenersRefQueue:Ljava/lang/ref/ReferenceQueue;
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "Ljava/lang/ref/ReferenceQueue",
- "<",
- "Lcom/blizzard/wow/net/session/SessionListener;",
- ">;"
- }
- .end annotation
- .end field
- .field loginMsgId:I
- .field private loginParams:Ljava/util/HashMap;
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "Ljava/util/HashMap",
- "<",
- "Ljava/lang/String;",
- "Ljava/lang/String;",
- ">;"
- }
- .end annotation
- .end field
- .field private volatile loginTimeout:J
- .field private srp:Lcom/blizzard/security/srp/client/ClientSRP;
- .field private srpSession:Lcom/blizzard/security/srp/client/ClientSession;
- .field private volatile state:Lcom/blizzard/util/State;
- .field private suppressCloseCallback:Z
- .field private tickTimerTask:Ljava/util/TimerTask;
- .field private useNioProtocolConnection:Z
- # direct methods
- .method static constructor <clinit>()V
- .locals 1
- .prologue
- .line 86
- const-class v0, Lcom/blizzard/wow/net/session/Session;
- #v0=(Reference);
- invoke-virtual {v0}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;
- move-result-object v0
- sput-object v0, Lcom/blizzard/wow/net/session/Session;->TAG:Ljava/lang/String;
- .line 44
- return-void
- .end method
- .method public constructor <init>(Landroid/content/Context;)V
- .locals 6
- .parameter "context"
- .prologue
- const-wide/16 v4, -0x1
- #v4=(LongLo);v5=(LongHi);
- const/4 v3, 0x0
- .line 147
- #v3=(Null);
- invoke-direct {p0}, Ljava/lang/Object;-><init>()V
- .line 122
- #p0=(Reference);
- new-instance v1, Ljava/util/HashMap;
- #v1=(UninitRef);
- invoke-direct {v1}, Ljava/util/HashMap;-><init>()V
- #v1=(Reference);
- iput-object v1, p0, Lcom/blizzard/wow/net/session/Session;->loginParams:Ljava/util/HashMap;
- .line 124
- new-instance v1, Lcom/blizzard/util/State;
- #v1=(UninitRef);
- const/high16 v2, 0x100
- #v2=(Integer);
- invoke-direct {v1, v2}, Lcom/blizzard/util/State;-><init>(I)V
- #v1=(Reference);
- iput-object v1, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- .line 125
- iput-boolean v3, p0, Lcom/blizzard/wow/net/session/Session;->suppressCloseCallback:Z
- .line 129
- const/4 v1, -0x1
- #v1=(Byte);
- iput v1, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
- .line 134
- new-instance v1, Ljava/util/ArrayList;
- #v1=(UninitRef);
- invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
- #v1=(Reference);
- iput-object v1, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
- .line 135
- new-instance v1, Ljava/lang/ref/ReferenceQueue;
- #v1=(UninitRef);
- invoke-direct {v1}, Ljava/lang/ref/ReferenceQueue;-><init>()V
- #v1=(Reference);
- iput-object v1, p0, Lcom/blizzard/wow/net/session/Session;->listenersRefQueue:Ljava/lang/ref/ReferenceQueue;
- .line 144
- iput-wide v4, p0, Lcom/blizzard/wow/net/session/Session;->connectionTimeout:J
- iput-wide v4, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
- .line 148
- sget-object v1, Lcom/blizzard/wow/net/session/Session;->CONN_OPEN_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
- if-eqz v1, :cond_0
- .line 149
- sget-object v1, Lcom/blizzard/wow/net/session/Session;->LOGIN_TIMEOUT_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
- if-eqz v1, :cond_0
- .line 150
- sget-object v1, Lcom/blizzard/wow/net/session/Session;->SESSION_AUTH_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
- if-nez v1, :cond_1
- .line 151
- :cond_0
- invoke-static {p1}, Lcom/blizzard/wow/net/session/Session;->initGenericErrors(Landroid/content/Context;)V
- .line 154
- :cond_1
- const/4 v1, 0x1
- #v1=(One);
- iput-boolean v1, p0, Lcom/blizzard/wow/net/session/Session;->useNioProtocolConnection:Z
- .line 156
- sget-boolean v1, Lcom/blizzard/wow/app/ArmoryApplication;->MANUFACTURER_MOTOROLA:Z
- #v1=(Boolean);
- if-eqz v1, :cond_3
- .line 157
- sget-object v0, Landroid/os/Build;->MODEL:Ljava/lang/String;
- .line 158
- .local v0, model:Ljava/lang/String;
- #v0=(Reference);
- if-eqz v0, :cond_3
- .line 159
- const-string v1, "DROIDX"
- #v1=(Reference);
- invoke-virtual {v0, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
- move-result v1
- #v1=(Boolean);
- if-nez v1, :cond_2
- .line 160
- const-string v1, "DROID2"
- #v1=(Reference);
- invoke-virtual {v0, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
- move-result v1
- #v1=(Boolean);
- if-eqz v1, :cond_3
- .line 161
- :cond_2
- iput-boolean v3, p0, Lcom/blizzard/wow/net/session/Session;->useNioProtocolConnection:Z
- .line 164
- .end local v0 #model:Ljava/lang/String;
- :cond_3
- #v0=(Conflicted);
- return-void
- .end method
- .method public static clearStringsOnLocaleChange()V
- .locals 1
- .prologue
- .line 1077
- sget-object v0, Lcom/blizzard/wow/app/ArmoryApplication;->appInstance:Lcom/blizzard/wow/app/ArmoryApplication;
- .line 1078
- .local v0, context:Landroid/content/Context;
- #v0=(Reference);
- invoke-static {v0}, Lcom/blizzard/wow/net/session/Session;->initGenericErrors(Landroid/content/Context;)V
- .line 1079
- return-void
- .end method
- .method private declared-synchronized connectionCloseCleanup()V
- .locals 6
- .prologue
- .line 378
- monitor-enter p0
- :try_start_0
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- #v3=(Reference);
- const v4, 0x1000001
- #v4=(Integer);
- invoke-virtual {v3, v4}, Lcom/blizzard/util/State;->set(I)Z
- .line 380
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->stopTick()V
- .line 381
- const-wide/16 v3, -0x1
- #v3=(LongLo);v4=(LongHi);
- iput-wide v3, p0, Lcom/blizzard/wow/net/session/Session;->connectionTimeout:J
- .line 382
- const-wide/16 v3, -0x1
- iput-wide v3, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
- .line 384
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
- #v3=(Reference);
- if-eqz v3, :cond_0
- .line 389
- const/4 v3, 0x0
- #v3=(Null);
- iput-object v3, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
- .line 392
- :cond_0
- #v3=(Reference);
- iget-boolean v3, p0, Lcom/blizzard/wow/net/session/Session;->suppressCloseCallback:Z
- #v3=(Boolean);
- if-nez v3, :cond_2
- .line 393
- new-instance v1, Ljava/util/ArrayList;
- #v1=(UninitRef);
- invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
- .line 394
- .local v1, listenersCopy:Ljava/util/List;,"Ljava/util/List<Lcom/blizzard/wow/net/session/SessionListener;>;"
- #v1=(Reference);
- iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
- #v4=(Reference);
- monitor-enter v4
- :try_end_0
- .catchall {:try_start_0 .. :try_end_0} :catchall_1
- .line 396
- :try_start_1
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
- #v3=(Reference);
- invoke-virtual {v3}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
- move-result-object v3
- :cond_1
- :goto_0
- #v0=(Conflicted);v2=(Conflicted);v5=(Conflicted);
- invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
- move-result v5
- #v5=(Boolean);
- if-nez v5, :cond_3
- .line 394
- monitor-exit v4
- :try_end_1
- .catchall {:try_start_1 .. :try_end_1} :catchall_0
- .line 403
- :try_start_2
- invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
- move-result-object v3
- :goto_1
- #v5=(Conflicted);
- invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
- move-result v4
- #v4=(Boolean);
- if-nez v4, :cond_4
- .line 406
- const/4 v3, 0x0
- #v3=(Null);
- iput-object v3, p0, Lcom/blizzard/wow/net/session/Session;->lastError:Lcom/blizzard/wow/net/session/Session$Error;
- .line 408
- .end local v1 #listenersCopy:Ljava/util/List;,"Ljava/util/List<Lcom/blizzard/wow/net/session/SessionListener;>;"
- :cond_2
- #v1=(Conflicted);v3=(Boolean);v4=(Conflicted);
- const/4 v3, 0x0
- #v3=(Null);
- iput-boolean v3, p0, Lcom/blizzard/wow/net/session/Session;->suppressCloseCallback:Z
- .line 410
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- #v3=(Reference);
- const v4, 0x1000001
- #v4=(Integer);
- const/high16 v5, 0x100
- #v5=(Integer);
- invoke-virtual {v3, v4, v5}, Lcom/blizzard/util/State;->compareAndSet(II)Z
- :try_end_2
- .catchall {:try_start_2 .. :try_end_2} :catchall_1
- .line 411
- monitor-exit p0
- return-void
- .line 396
- .restart local v1 #listenersCopy:Ljava/util/List;,"Ljava/util/List<Lcom/blizzard/wow/net/session/SessionListener;>;"
- :cond_3
- :try_start_3
- #v1=(Reference);v4=(Reference);v5=(Boolean);
- invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
- move-result-object v2
- #v2=(Reference);
- check-cast v2, Ljava/lang/ref/Reference;
- .line 397
- .local v2, lref:Ljava/lang/ref/Reference;,"Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;"
- invoke-virtual {v2}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object;
- move-result-object v0
- #v0=(Reference);
- check-cast v0, Lcom/blizzard/wow/net/session/SessionListener;
- .line 398
- .local v0, listener:Lcom/blizzard/wow/net/session/SessionListener;
- if-eqz v0, :cond_1
- .line 399
- invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
- goto :goto_0
- .line 394
- .end local v0 #listener:Lcom/blizzard/wow/net/session/SessionListener;
- .end local v2 #lref:Ljava/lang/ref/Reference;,"Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;"
- :catchall_0
- #v0=(Conflicted);v2=(Conflicted);v3=(Conflicted);v5=(Conflicted);
- move-exception v3
- #v3=(Reference);
- monitor-exit v4
- :try_end_3
- .catchall {:try_start_3 .. :try_end_3} :catchall_0
- :try_start_4
- throw v3
- :try_end_4
- .catchall {:try_start_4 .. :try_end_4} :catchall_1
- .line 378
- .end local v1 #listenersCopy:Ljava/util/List;,"Ljava/util/List<Lcom/blizzard/wow/net/session/SessionListener;>;"
- :catchall_1
- #v1=(Conflicted);v3=(Conflicted);v4=(Conflicted);
- move-exception v3
- #v3=(Reference);
- monitor-exit p0
- throw v3
- .line 403
- .restart local v1 #listenersCopy:Ljava/util/List;,"Ljava/util/List<Lcom/blizzard/wow/net/session/SessionListener;>;"
- :cond_4
- :try_start_5
- #v1=(Reference);v4=(Boolean);
- invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
- move-result-object v0
- #v0=(Reference);
- check-cast v0, Lcom/blizzard/wow/net/session/SessionListener;
- .line 404
- .restart local v0 #listener:Lcom/blizzard/wow/net/session/SessionListener;
- iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- #v4=(Reference);
- iget-object v5, p0, Lcom/blizzard/wow/net/session/Session;->lastError:Lcom/blizzard/wow/net/session/Session$Error;
- #v5=(Reference);
- invoke-interface {v0, v4, v5}, Lcom/blizzard/wow/net/session/SessionListener;->onSessionEnded(Lcom/blizzard/wow/user/Account;Lcom/blizzard/wow/net/session/Session$Error;)V
- :try_end_5
- .catchall {:try_start_5 .. :try_end_5} :catchall_1
- goto :goto_1
- .end method
- .method private final handleAuthenticate1Response(Lcom/blizzard/wow/net/message/Response;)V
- .locals 6
- .parameter "response"
- .prologue
- .line 593
- invoke-virtual {p1}, Lcom/blizzard/wow/net/message/Response;->isError()Z
- move-result v3
- #v3=(Boolean);
- if-eqz v3, :cond_0
- .line 594
- new-instance v3, Lcom/blizzard/wow/net/session/Session$Error;
- #v3=(UninitRef);
- iget-object v4, p1, Lcom/blizzard/wow/net/message/Response;->error:Ljava/lang/String;
- #v4=(Reference);
- iget-object v5, p1, Lcom/blizzard/wow/net/message/Response;->errorDescription:Ljava/lang/String;
- #v5=(Reference);
- invoke-direct {v3, v4, v5}, Lcom/blizzard/wow/net/session/Session$Error;-><init>(Ljava/lang/String;Ljava/lang/String;)V
- #v3=(Reference);
- invoke-virtual {p0, v3}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
- .line 621
- :goto_0
- #v0=(Conflicted);v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);
- return-void
- .line 601
- :cond_0
- #v0=(Uninit);v1=(Uninit);v2=(Uninit);v3=(Boolean);v4=(Uninit);v5=(Uninit);
- const/4 v3, 0x0
- #v3=(Null);
- invoke-direct {p0, p1, v3}, Lcom/blizzard/wow/net/session/Session;->validateStage1Response(Lcom/blizzard/wow/net/message/Response;Ljava/lang/String;)[B
- move-result-object v1
- .line 602
- .local v1, clientProof:[B
- #v1=(Reference);
- if-eqz v1, :cond_1
- .line 603
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- #v3=(Reference);
- const v4, 0x2000004
- .line 604
- #v4=(Integer);
- const v5, 0x2000005
- .line 603
- #v5=(Integer);
- invoke-virtual {v3, v4, v5}, Lcom/blizzard/util/State;->compareAndSet(II)Z
- move-result v3
- #v3=(Boolean);
- if-eqz v3, :cond_1
- .line 606
- new-instance v0, Lcom/blizzard/wow/net/message/Request;
- #v0=(UninitRef);
- const-string v3, "/authenticate2"
- #v3=(Reference);
- invoke-direct {v0, v3}, Lcom/blizzard/wow/net/message/Request;-><init>(Ljava/lang/String;)V
- .line 607
- .local v0, auth2Message:Lcom/blizzard/wow/net/message/Request;
- #v0=(Reference);
- iget-object v3, v0, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
- const-string v4, "clientProof"
- #v4=(Reference);
- invoke-virtual {v3, v4, v1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
- .line 609
- invoke-virtual {p0, v0}, Lcom/blizzard/wow/net/session/Session;->sendRequest(Lcom/blizzard/wow/net/message/Request;)Z
- move-result v2
- .line 610
- .local v2, success:Z
- #v2=(Boolean);
- if-eqz v2, :cond_1
- .line 611
- iget v3, v0, Lcom/blizzard/wow/net/message/Request;->id:I
- #v3=(Integer);
- iput v3, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
- goto :goto_0
- .line 620
- .end local v0 #auth2Message:Lcom/blizzard/wow/net/message/Request;
- .end local v2 #success:Z
- :cond_1
- #v0=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);
- sget-object v3, Lcom/blizzard/wow/net/session/Session;->SESSION_AUTH_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
- #v3=(Reference);
- invoke-virtual {p0, v3}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
- goto :goto_0
- .end method
- .method private final handleAuthenticate2Response(Lcom/blizzard/wow/net/message/Response;)V
- .locals 5
- .parameter "response"
- .prologue
- .line 624
- invoke-virtual {p1}, Lcom/blizzard/wow/net/message/Response;->isError()Z
- move-result v2
- #v2=(Boolean);
- if-eqz v2, :cond_1
- .line 625
- new-instance v2, Lcom/blizzard/wow/net/session/Session$Error;
- #v2=(UninitRef);
- iget-object v3, p1, Lcom/blizzard/wow/net/message/Response;->error:Ljava/lang/String;
- #v3=(Reference);
- iget-object v4, p1, Lcom/blizzard/wow/net/message/Response;->errorDescription:Ljava/lang/String;
- #v4=(Reference);
- invoke-direct {v2, v3, v4}, Lcom/blizzard/wow/net/session/Session$Error;-><init>(Ljava/lang/String;Ljava/lang/String;)V
- #v2=(Reference);
- invoke-virtual {p0, v2}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
- .line 652
- :cond_0
- :goto_0
- #v0=(Conflicted);v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Conflicted);
- return-void
- .line 632
- :cond_1
- #v0=(Uninit);v1=(Uninit);v2=(Boolean);v3=(Uninit);v4=(Uninit);
- invoke-direct {p0, p1}, Lcom/blizzard/wow/net/session/Session;->validateStage2Response(Lcom/blizzard/wow/net/message/Response;)Z
- move-result v2
- if-nez v2, :cond_2
- .line 633
- sget-object v2, Lcom/blizzard/wow/net/session/Session;->SESSION_AUTH_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
- #v2=(Reference);
- invoke-virtual {p0, v2}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
- goto :goto_0
- .line 638
- :cond_2
- #v2=(Boolean);
- iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- #v2=(Reference);
- const v3, 0x2000005
- #v3=(Integer);
- const v4, 0x2000007
- #v4=(Integer);
- invoke-virtual {v2, v3, v4}, Lcom/blizzard/util/State;->compareAndSet(II)Z
- move-result v2
- #v2=(Boolean);
- if-eqz v2, :cond_0
- .line 639
- new-instance v0, Lcom/blizzard/wow/net/message/Request;
- .line 640
- #v0=(UninitRef);
- const-string v2, "/authenticate2"
- .line 639
- #v2=(Reference);
- invoke-direct {v0, v2}, Lcom/blizzard/wow/net/message/Request;-><init>(Ljava/lang/String;)V
- .line 641
- .local v0, auth2DummyMessage:Lcom/blizzard/wow/net/message/Request;
- #v0=(Reference);
- iget-object v2, v0, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
- const-string v3, "clientProof"
- #v3=(Reference);
- const/4 v4, 0x0
- #v4=(Null);
- new-array v4, v4, [B
- #v4=(Reference);
- invoke-virtual {v2, v3, v4}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
- .line 643
- invoke-virtual {p0, v0}, Lcom/blizzard/wow/net/session/Session;->sendRequest(Lcom/blizzard/wow/net/message/Request;)Z
- move-result v1
- .line 644
- .local v1, success:Z
- #v1=(Boolean);
- if-eqz v1, :cond_3
- .line 645
- iget v2, v0, Lcom/blizzard/wow/net/message/Request;->id:I
- #v2=(Integer);
- iput v2, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
- goto :goto_0
- .line 647
- :cond_3
- #v2=(Reference);
- sget-object v2, Lcom/blizzard/wow/net/session/Session;->SESSION_AUTH_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
- invoke-virtual {p0, v2}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
- goto :goto_0
- .end method
- .method private handleHardLogin1Response(Lcom/blizzard/wow/net/message/Response;)V
- .locals 5
- .parameter "response"
- .prologue
- const/4 v4, 0x0
- .line 816
- #v4=(Null);
- const/4 v1, 0x0
- .line 817
- .local v1, callback:Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
- #v1=(Null);
- iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
- #v2=(Reference);
- if-eqz v2, :cond_0
- .line 818
- iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
- invoke-virtual {v2}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object;
- move-result-object v1
- .end local v1 #callback:Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
- #v1=(Reference);
- check-cast v1, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
- .line 820
- .restart local v1 #callback:Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
- :cond_0
- if-nez v1, :cond_1
- .line 821
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
- .line 853
- :goto_0
- #v0=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Integer);
- return-void
- .line 825
- :cond_1
- #v0=(Uninit);v2=(Reference);v3=(Uninit);v4=(Null);
- invoke-virtual {p1}, Lcom/blizzard/wow/net/message/Response;->isError()Z
- move-result v2
- #v2=(Boolean);
- if-eqz v2, :cond_2
- .line 828
- invoke-interface {v1, p1}, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;->hardLoginFailed(Lcom/blizzard/wow/net/message/Response;)V
- .line 829
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
- goto :goto_0
- .line 833
- :cond_2
- invoke-interface {v1}, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;->hardLoginPassword()Ljava/lang/String;
- move-result-object v2
- #v2=(Reference);
- invoke-direct {p0, p1, v2}, Lcom/blizzard/wow/net/session/Session;->validateStage1Response(Lcom/blizzard/wow/net/message/Response;Ljava/lang/String;)[B
- move-result-object v2
- iput-object v2, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginClientProof:[B
- .line 834
- iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginClientProof:[B
- if-eqz v2, :cond_5
- .line 835
- iget-object v2, p1, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
- const-string v3, "authenticator"
- #v3=(Reference);
- invoke-virtual {v2, v3}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
- move-result-object v0
- #v0=(Reference);
- check-cast v0, Ljava/util/HashMap;
- .line 836
- .local v0, authenticatorHash:Ljava/util/HashMap;,"Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Object;>;"
- if-eqz v0, :cond_4
- .line 837
- iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- const v3, 0x4000001
- .line 838
- #v3=(Integer);
- const v4, 0x4000002
- .line 837
- #v4=(Integer);
- invoke-virtual {v2, v3, v4}, Lcom/blizzard/util/State;->compareAndSet(II)Z
- move-result v2
- #v2=(Boolean);
- if-eqz v2, :cond_3
- .line 840
- invoke-interface {v1, v0}, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;->hardLoginAuthenticatorRequired(Ljava/util/HashMap;)V
- goto :goto_0
- .line 843
- :cond_3
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
- goto :goto_0
- .line 847
- :cond_4
- #v2=(Reference);v3=(Reference);v4=(Null);
- invoke-direct {p0, v4}, Lcom/blizzard/wow/net/session/Session;->sendHardLogin2Request(Ljava/lang/String;)Z
- goto :goto_0
- .line 850
- .end local v0 #authenticatorHash:Ljava/util/HashMap;,"Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Object;>;"
- :cond_5
- #v0=(Uninit);v3=(Uninit);
- invoke-interface {v1, v4}, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;->hardLoginFailed(Lcom/blizzard/wow/net/message/Response;)V
- .line 851
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
- goto :goto_0
- .end method
- .method private final handleHardLogin2Response(Lcom/blizzard/wow/net/message/Response;)V
- .locals 4
- .parameter "response"
- .prologue
- .line 929
- const/4 v0, 0x0
- .line 930
- .local v0, callback:Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
- #v0=(Null);
- iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
- #v2=(Reference);
- if-eqz v2, :cond_0
- .line 931
- iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
- invoke-virtual {v2}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object;
- move-result-object v0
- .end local v0 #callback:Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
- #v0=(Reference);
- check-cast v0, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
- .line 933
- .restart local v0 #callback:Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
- :cond_0
- if-nez v0, :cond_1
- .line 934
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
- .line 955
- :goto_0
- #v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);
- return-void
- .line 938
- :cond_1
- #v1=(Uninit);v2=(Reference);v3=(Uninit);
- invoke-virtual {p1}, Lcom/blizzard/wow/net/message/Response;->isError()Z
- move-result v2
- #v2=(Boolean);
- if-eqz v2, :cond_2
- .line 941
- invoke-interface {v0, p1}, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;->hardLoginFailed(Lcom/blizzard/wow/net/message/Response;)V
- .line 942
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
- goto :goto_0
- .line 946
- :cond_2
- invoke-direct {p0, p1}, Lcom/blizzard/wow/net/session/Session;->validateStage2Response(Lcom/blizzard/wow/net/message/Response;)Z
- move-result v2
- if-eqz v2, :cond_3
- .line 947
- iget-object v2, p1, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
- #v2=(Reference);
- const-string v3, "sessionCode"
- #v3=(Reference);
- invoke-virtual {v2, v3}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
- move-result-object v1
- #v1=(Reference);
- check-cast v1, Ljava/lang/String;
- .line 948
- .local v1, sessionCode:Ljava/lang/String;
- iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- invoke-virtual {v2, v1}, Lcom/blizzard/wow/user/Account;->updateSession(Ljava/lang/String;)Z
- .line 949
- invoke-interface {v0}, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;->hardLoginSuccess()V
- .line 954
- .end local v1 #sessionCode:Ljava/lang/String;
- :goto_1
- #v1=(Conflicted);v3=(Conflicted);
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
- goto :goto_0
- .line 951
- :cond_3
- #v1=(Uninit);v2=(Boolean);v3=(Uninit);
- const/4 v2, 0x0
- #v2=(Null);
- invoke-interface {v0, v2}, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;->hardLoginFailed(Lcom/blizzard/wow/net/message/Response;)V
- goto :goto_1
- .end method
- .method private final handleLogin(Lcom/blizzard/wow/net/message/Response;)V
- .locals 7
- .parameter "response"
- .prologue
- .line 754
- invoke-virtual {p1}, Lcom/blizzard/wow/net/message/Response;->isError()Z
- move-result v4
- #v4=(Boolean);
- if-eqz v4, :cond_1
- .line 755
- new-instance v4, Lcom/blizzard/wow/net/session/Session$Error;
- #v4=(UninitRef);
- iget-object v5, p1, Lcom/blizzard/wow/net/message/Response;->error:Ljava/lang/String;
- #v5=(Reference);
- iget-object v6, p1, Lcom/blizzard/wow/net/message/Response;->errorDescription:Ljava/lang/String;
- #v6=(Reference);
- invoke-direct {v4, v5, v6}, Lcom/blizzard/wow/net/session/Session$Error;-><init>(Ljava/lang/String;Ljava/lang/String;)V
- #v4=(Reference);
- invoke-virtual {p0, v4}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
- .line 786
- :cond_0
- #v0=(Conflicted);v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);v6=(Conflicted);
- return-void
- .line 761
- :cond_1
- #v0=(Uninit);v1=(Uninit);v2=(Uninit);v3=(Uninit);v4=(Boolean);v5=(Uninit);v6=(Uninit);
- iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- #v4=(Reference);
- const v5, 0x2000007
- #v5=(Integer);
- const/high16 v6, 0x400
- #v6=(Integer);
- invoke-virtual {v4, v5, v6}, Lcom/blizzard/util/State;->compareAndSet(II)Z
- move-result v4
- #v4=(Boolean);
- if-eqz v4, :cond_0
- .line 763
- iget-object v4, p1, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
- #v4=(Reference);
- const-string v5, "sessionCode"
- #v5=(Reference);
- invoke-virtual {v4, v5}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
- move-result-object v3
- #v3=(Reference);
- check-cast v3, Ljava/lang/String;
- .line 764
- .local v3, sessionCode:Ljava/lang/String;
- iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- invoke-virtual {v4, v3}, Lcom/blizzard/wow/user/Account;->updateSession(Ljava/lang/String;)Z
- .line 765
- const/4 v4, 0x0
- #v4=(Null);
- iput-object v4, p0, Lcom/blizzard/wow/net/session/Session;->clientSalt:[B
- .line 767
- const/4 v4, -0x1
- #v4=(Byte);
- iput v4, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
- .line 770
- invoke-virtual {p0}, Lcom/blizzard/wow/net/session/Session;->onSessionEstablished()V
- .line 772
- new-instance v1, Ljava/util/ArrayList;
- #v1=(UninitRef);
- invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
- .line 773
- .local v1, listenersCopy:Ljava/util/List;,"Ljava/util/List<Lcom/blizzard/wow/net/session/SessionListener;>;"
- #v1=(Reference);
- iget-object v5, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
- monitor-enter v5
- .line 775
- :try_start_0
- iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
- #v4=(Reference);
- invoke-virtual {v4}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
- move-result-object v4
- :cond_2
- :goto_0
- #v0=(Conflicted);v2=(Conflicted);
- invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
- move-result v6
- #v6=(Boolean);
- if-nez v6, :cond_3
- .line 773
- monitor-exit v5
- :try_end_0
- .catchall {:try_start_0 .. :try_end_0} :catchall_0
- .line 782
- invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
- move-result-object v4
- :goto_1
- #v5=(Conflicted);
- invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
- move-result v5
- #v5=(Boolean);
- if-eqz v5, :cond_0
- invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
- move-result-object v0
- #v0=(Reference);
- check-cast v0, Lcom/blizzard/wow/net/session/SessionListener;
- .line 783
- .local v0, listener:Lcom/blizzard/wow/net/session/SessionListener;
- invoke-interface {v0, p1}, Lcom/blizzard/wow/net/session/SessionListener;->onSessionEstablished(Lcom/blizzard/wow/net/message/Response;)V
- goto :goto_1
- .line 775
- .end local v0 #listener:Lcom/blizzard/wow/net/session/SessionListener;
- :cond_3
- :try_start_1
- #v0=(Conflicted);v5=(Reference);
- invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
- move-result-object v2
- #v2=(Reference);
- check-cast v2, Ljava/lang/ref/Reference;
- .line 776
- .local v2, lref:Ljava/lang/ref/Reference;,"Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;"
- invoke-virtual {v2}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object;
- move-result-object v0
- #v0=(Reference);
- check-cast v0, Lcom/blizzard/wow/net/session/SessionListener;
- .line 777
- .restart local v0 #listener:Lcom/blizzard/wow/net/session/SessionListener;
- if-eqz v0, :cond_2
- .line 778
- invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
- goto :goto_0
- .line 773
- .end local v0 #listener:Lcom/blizzard/wow/net/session/SessionListener;
- .end local v2 #lref:Ljava/lang/ref/Reference;,"Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;"
- :catchall_0
- #v0=(Conflicted);v2=(Conflicted);v4=(Conflicted);v6=(Integer);
- move-exception v4
- #v4=(Reference);
- monitor-exit v5
- :try_end_1
- .catchall {:try_start_1 .. :try_end_1} :catchall_0
- throw v4
- .end method
- .method private final handleReconnect1Response(Lcom/blizzard/wow/net/message/Response;)V
- .locals 17
- .parameter "response"
- .prologue
- .line 680
- invoke-virtual/range {p1 .. p1}, Lcom/blizzard/wow/net/message/Response;->isError()Z
- move-result v14
- #v14=(Boolean);
- if-eqz v14, :cond_1
- .line 681
- new-instance v14, Lcom/blizzard/wow/net/session/Session$Error;
- #v14=(UninitRef);
- move-object/from16 v0, p1
- #v0=(Reference);
- iget-object v15, v0, Lcom/blizzard/wow/net/message/Response;->error:Ljava/lang/String;
- #v15=(Reference);
- move-object/from16 v0, p1
- iget-object v0, v0, Lcom/blizzard/wow/net/message/Response;->errorDescription:Ljava/lang/String;
- move-object/from16 v16, v0
- #v16=(Reference);
- invoke-direct/range {v14 .. v16}, Lcom/blizzard/wow/net/session/Session$Error;-><init>(Ljava/lang/String;Ljava/lang/String;)V
- #v14=(Reference);
- move-object/from16 v0, p0
- invoke-virtual {v0, v14}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
- .line 751
- :cond_0
- :goto_0
- #v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);v6=(Conflicted);v7=(Conflicted);v8=(Conflicted);v9=(Conflicted);v10=(Conflicted);v11=(Conflicted);v12=(Conflicted);v13=(Conflicted);v14=(Conflicted);v15=(Conflicted);v16=(Conflicted);
- return-void
- .line 688
- :cond_1
- #v0=(Uninit);v1=(Uninit);v2=(Uninit);v3=(Uninit);v4=(Uninit);v5=(Uninit);v6=(Uninit);v7=(Uninit);v8=(Uninit);v9=(Uninit);v10=(Uninit);v11=(Uninit);v12=(Uninit);v13=(Uninit);v14=(Boolean);v15=(Uninit);v16=(Uninit);
- move-object/from16 v0, p1
- #v0=(Reference);
- iget-object v14, v0, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
- #v14=(Reference);
- const-string v15, "serverProof"
- #v15=(Reference);
- invoke-virtual {v14, v15}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
- move-result-object v7
- #v7=(Reference);
- check-cast v7, [B
- .line 689
- .local v7, serverProof:[B
- move-object/from16 v0, p1
- iget-object v14, v0, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
- const-string v15, "serverSalt"
- invoke-virtual {v14, v15}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
- move-result-object v9
- #v9=(Reference);
- check-cast v9, [B
- .line 691
- .local v9, serverSalt:[B
- move-object/from16 v0, p0
- iget-object v14, v0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- invoke-virtual {v14}, Lcom/blizzard/wow/user/Account;->getSessionKey()[B
- move-result-object v10
- .line 692
- .local v10, sessionKey:[B
- #v10=(Reference);
- array-length v11, v10
- .line 694
- .local v11, sessionKeySize:I
- #v11=(Integer);
- const/4 v5, 0x0
- #v5=(Null);
- check-cast v5, [B
- .local v5, newSessionKey:[B
- #v5=(Reference);
- const/4 v1, 0x0
- #v1=(Null);
- check-cast v1, [B
- .line 697
- .local v1, clientProof:[B
- :try_start_0
- #v1=(Reference);
- new-instance v4, Ljavax/crypto/spec/SecretKeySpec;
- #v4=(UninitRef);
- const-string v14, "MacSHA256"
- invoke-direct {v4, v10, v14}, Ljavax/crypto/spec/SecretKeySpec;-><init>([BLjava/lang/String;)V
- .line 699
- .local v4, macKey:Ljava/security/Key;
- #v4=(Reference);
- const-string v14, "HMacSHA256"
- invoke-static {v14}, Ljavax/crypto/Mac;->getInstance(Ljava/lang/String;)Ljavax/crypto/Mac;
- move-result-object v3
- .line 700
- .local v3, mac:Ljavax/crypto/Mac;
- #v3=(Reference);
- invoke-virtual {v3, v4}, Ljavax/crypto/Mac;->init(Ljava/security/Key;)V
- .line 701
- const/4 v14, 0x0
- #v14=(Null);
- invoke-virtual {v3, v14}, Ljavax/crypto/Mac;->update(B)V
- .line 702
- move-object/from16 v0, p0
- iget-object v14, v0, Lcom/blizzard/wow/net/session/Session;->clientSalt:[B
- #v14=(Reference);
- invoke-virtual {v3, v14}, Ljavax/crypto/Mac;->update([B)V
- .line 703
- invoke-virtual {v3, v9}, Ljavax/crypto/Mac;->update([B)V
- .line 704
- invoke-virtual {v3}, Ljavax/crypto/Mac;->doFinal()[B
- move-result-object v8
- .line 706
- .local v8, serverProofCheck:[B
- #v8=(Reference);
- invoke-static {v7, v8}, Lcom/blizzard/wow/net/session/Session;->utilByteArrayCmp([B[B)Z
- move-result v14
- #v14=(Boolean);
- if-nez v14, :cond_2
- .line 708
- new-instance v14, Ljava/lang/Exception;
- #v14=(UninitRef);
- const-string v15, "Server proof validation failed"
- invoke-direct {v14, v15}, Ljava/lang/Exception;-><init>(Ljava/lang/String;)V
- #v14=(Reference);
- throw v14
- :try_end_0
- .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
- .line 728
- .end local v3 #mac:Ljavax/crypto/Mac;
- .end local v4 #macKey:Ljava/security/Key;
- .end local v8 #serverProofCheck:[B
- :catch_0
- #v3=(Conflicted);v4=(Conflicted);v8=(Conflicted);v12=(Conflicted);v14=(Conflicted);v16=(Conflicted);
- move-exception v2
- .line 729
- .local v2, e:Ljava/lang/Exception;
- #v2=(Reference);
- sget-object v14, Lcom/blizzard/wow/net/session/Session;->SESSION_AUTH_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
- #v14=(Reference);
- move-object/from16 v0, p0
- invoke-virtual {v0, v14}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
- goto :goto_0
- .line 712
- .end local v2 #e:Ljava/lang/Exception;
- .restart local v3 #mac:Ljavax/crypto/Mac;
- .restart local v4 #macKey:Ljava/security/Key;
- .restart local v8 #serverProofCheck:[B
- :cond_2
- :try_start_1
- #v2=(Uninit);v3=(Reference);v4=(Reference);v8=(Reference);v12=(Uninit);v14=(Boolean);v16=(Uninit);
- invoke-virtual {v3, v4}, Ljavax/crypto/Mac;->init(Ljava/security/Key;)V
- .line 713
- const/4 v14, 0x1
- #v14=(One);
- invoke-virtual {v3, v14}, Ljavax/crypto/Mac;->update(B)V
- .line 714
- move-object/from16 v0, p0
- iget-object v14, v0, Lcom/blizzard/wow/net/session/Session;->clientSalt:[B
- #v14=(Reference);
- invoke-virtual {v3, v14}, Ljavax/crypto/Mac;->update([B)V
- .line 715
- invoke-virtual {v3, v9}, Ljavax/crypto/Mac;->update([B)V
- .line 716
- invoke-virtual {v3}, Ljavax/crypto/Mac;->doFinal()[B
- move-result-object v1
- .line 719
- new-array v5, v11, [B
- .line 720
- div-int/lit8 v12, v11, 0x2
- .line 722
- .local v12, sessionKeySizeHalf:I
- #v12=(Integer);
- invoke-virtual {v3, v4}, Ljavax/crypto/Mac;->init(Ljava/security/Key;)V
- .line 723
- invoke-virtual {v3, v1}, Ljavax/crypto/Mac;->update([B)V
- .line 724
- invoke-virtual {v3}, Ljavax/crypto/Mac;->doFinal()[B
- move-result-object v14
- const/4 v15, 0x0
- #v15=(Null);
- const/16 v16, 0x0
- #v16=(Null);
- move/from16 v0, v16
- #v0=(Null);
- invoke-static {v14, v15, v5, v0, v12}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
- .line 725
- invoke-virtual {v3, v4}, Ljavax/crypto/Mac;->init(Ljava/security/Key;)V
- .line 726
- invoke-virtual {v3, v7}, Ljavax/crypto/Mac;->update([B)V
- .line 727
- invoke-virtual {v3}, Ljavax/crypto/Mac;->doFinal()[B
- move-result-object v14
- const/4 v15, 0x0
- invoke-static {v14, v15, v5, v12, v12}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
- :try_end_1
- .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0
- .line 734
- move-object/from16 v0, p0
- #v0=(Reference);
- iget-object v14, v0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- invoke-virtual {v14, v5}, Lcom/blizzard/wow/user/Account;->setNewSessionKey([B)V
- .line 736
- move-object/from16 v0, p0
- iget-object v14, v0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- const v15, 0x2000006
- #v15=(Integer);
- const v16, 0x2000007
- #v16=(Integer);
- invoke-virtual/range {v14 .. v16}, Lcom/blizzard/util/State;->compareAndSet(II)Z
- move-result v14
- #v14=(Boolean);
- if-eqz v14, :cond_0
- .line 738
- new-instance v6, Lcom/blizzard/wow/net/message/Request;
- .line 739
- #v6=(UninitRef);
- const-string v14, "/reconnect2"
- .line 738
- #v14=(Reference);
- invoke-direct {v6, v14}, Lcom/blizzard/wow/net/message/Request;-><init>(Ljava/lang/String;)V
- .line 740
- .local v6, reconn2Message:Lcom/blizzard/wow/net/message/Request;
- #v6=(Reference);
- iget-object v14, v6, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
- const-string v15, "clientProof"
- #v15=(Reference);
- invoke-virtual {v14, v15, v1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
- .line 742
- move-object/from16 v0, p0
- invoke-virtual {v0, v6}, Lcom/blizzard/wow/net/session/Session;->sendRequest(Lcom/blizzard/wow/net/message/Request;)Z
- move-result v13
- .line 743
- .local v13, success:Z
- #v13=(Boolean);
- if-eqz v13, :cond_3
- .line 744
- iget v14, v6, Lcom/blizzard/wow/net/message/Request;->id:I
- #v14=(Integer);
- move-object/from16 v0, p0
- iput v14, v0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
- goto/16 :goto_0
- .line 746
- :cond_3
- #v14=(Reference);
- invoke-virtual/range {p0 .. p0}, Lcom/blizzard/wow/net/session/Session;->disconnect()V
- goto/16 :goto_0
- .end method
- .method private hardLoginCleanup()V
- .locals 2
- .prologue
- const/4 v0, 0x0
- #v0=(Null);
- const/high16 v1, 0x400
- .line 959
- #v1=(Integer);
- iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
- .line 960
- iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginClientProof:[B
- .line 962
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- #v0=(Reference);
- invoke-virtual {v0, v1, v1}, Lcom/blizzard/util/State;->compareMaskAndSet(II)Z
- .line 964
- return-void
- .end method
- .method public static initGenericErrors(Landroid/content/Context;)V
- .locals 5
- .parameter "context"
- .prologue
- const v4, 0x7f060139
- #v4=(Integer);
- const v3, 0x7f060138
- .line 1082
- #v3=(Integer);
- sget-object v0, Lcom/blizzard/wow/net/session/Session;->CONN_OPEN_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
- #v0=(Reference);
- if-nez v0, :cond_0
- .line 1083
- new-instance v0, Lcom/blizzard/wow/net/session/Session$Error;
- .line 1084
- #v0=(UninitRef);
- invoke-virtual {p0, v3}, Landroid/content/Context;->getString(I)Ljava/lang/String;
- move-result-object v1
- .line 1085
- #v1=(Reference);
- invoke-virtual {p0, v4}, Landroid/content/Context;->getString(I)Ljava/lang/String;
- move-result-object v2
- .line 1083
- #v2=(Reference);
- invoke-direct {v0, v1, v2}, Lcom/blizzard/wow/net/session/Session$Error;-><init>(Ljava/lang/String;Ljava/lang/String;)V
- #v0=(Reference);
- sput-object v0, Lcom/blizzard/wow/net/session/Session;->CONN_OPEN_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
- .line 1087
- :cond_0
- #v1=(Conflicted);v2=(Conflicted);
- sget-object v0, Lcom/blizzard/wow/net/session/Session;->LOGIN_TIMEOUT_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
- if-nez v0, :cond_1
- .line 1088
- new-instance v0, Lcom/blizzard/wow/net/session/Session$Error;
- .line 1089
- #v0=(UninitRef);
- invoke-virtual {p0, v3}, Landroid/content/Context;->getString(I)Ljava/lang/String;
- move-result-object v1
- .line 1090
- #v1=(Reference);
- const v2, 0x7f06013a
- #v2=(Integer);
- invoke-virtual {p0, v2}, Landroid/content/Context;->getString(I)Ljava/lang/String;
- move-result-object v2
- .line 1088
- #v2=(Reference);
- invoke-direct {v0, v1, v2}, Lcom/blizzard/wow/net/session/Session$Error;-><init>(Ljava/lang/String;Ljava/lang/String;)V
- #v0=(Reference);
- sput-object v0, Lcom/blizzard/wow/net/session/Session;->LOGIN_TIMEOUT_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
- .line 1092
- :cond_1
- #v1=(Conflicted);v2=(Conflicted);
- sget-object v0, Lcom/blizzard/wow/net/session/Session;->SESSION_AUTH_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
- if-nez v0, :cond_2
- .line 1093
- new-instance v0, Lcom/blizzard/wow/net/session/Session$Error;
- .line 1094
- #v0=(UninitRef);
- invoke-virtual {p0, v3}, Landroid/content/Context;->getString(I)Ljava/lang/String;
- move-result-object v1
- .line 1095
- #v1=(Reference);
- invoke-virtual {p0, v4}, Landroid/content/Context;->getString(I)Ljava/lang/String;
- move-result-object v2
- .line 1093
- #v2=(Reference);
- invoke-direct {v0, v1, v2}, Lcom/blizzard/wow/net/session/Session$Error;-><init>(Ljava/lang/String;Ljava/lang/String;)V
- #v0=(Reference);
- sput-object v0, Lcom/blizzard/wow/net/session/Session;->SESSION_AUTH_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
- .line 1097
- :cond_2
- #v1=(Conflicted);v2=(Conflicted);
- return-void
- .end method
- .method private initializeProtocolConnection(Ljava/lang/String;I)V
- .locals 2
- .parameter "serverHost"
- .parameter "serverPort"
- .prologue
- .line 337
- const/4 v0, 0x0
- #v0=(Null);
- iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- .line 339
- iget-boolean v0, p0, Lcom/blizzard/wow/net/session/Session;->useNioProtocolConnection:Z
- #v0=(Boolean);
- if-eqz v0, :cond_0
- .line 340
- new-instance v0, Lcom/blizzard/wow/net/protocol/binary/BinaryProtocolConnectionNio;
- .line 341
- #v0=(UninitRef);
- invoke-virtual {p0}, Lcom/blizzard/wow/net/session/Session;->getHandler()Landroid/os/Handler;
- move-result-object v1
- #v1=(Reference);
- invoke-direct {v0, p1, p2, v1}, Lcom/blizzard/wow/net/protocol/binary/BinaryProtocolConnectionNio;-><init>(Ljava/lang/String;ILandroid/os/Handler;)V
- .line 340
- #v0=(Reference);
- iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- .line 347
- :goto_0
- #v1=(Conflicted);
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- invoke-interface {v0, p0}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->setOnConnectionListener(Lcom/blizzard/wow/net/protocol/ProtocolConnection$OnConnectionListener;)V
- .line 348
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- invoke-interface {v0, p0}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->setOnRequestSentListener(Lcom/blizzard/wow/net/protocol/ProtocolConnection$OnRequestSentListener;)V
- .line 349
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- invoke-interface {v0, p0}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->setOnResponseReceivedListener(Lcom/blizzard/wow/net/protocol/ProtocolConnection$OnResponseReceivedListener;)V
- .line 350
- return-void
- .line 343
- :cond_0
- #v0=(Boolean);v1=(Uninit);
- new-instance v0, Lcom/blizzard/wow/net/protocol/binary/BinaryProtocolConnection;
- #v0=(UninitRef);
- invoke-direct {v0, p1, p2}, Lcom/blizzard/wow/net/protocol/binary/BinaryProtocolConnection;-><init>(Ljava/lang/String;I)V
- #v0=(Reference);
- iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- goto :goto_0
- .end method
- .method private prepareStage1Request(Ljava/lang/String;)Lcom/blizzard/wow/net/message/Request;
- .locals 6
- .parameter "target"
- .prologue
- .line 968
- iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
- #v2=(Reference);
- if-nez v2, :cond_0
- .line 970
- sget v2, Lcom/blizzard/wow/user/Account;->ACCOUNT_TYPE_BATTLE_NET:I
- #v2=(Integer);
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- #v3=(Reference);
- iget v3, v3, Lcom/blizzard/wow/user/Account;->accountType:I
- #v3=(Integer);
- if-ne v2, v3, :cond_1
- .line 971
- sget-object v0, Lcom/blizzard/security/srp/client/ClientConstants$Mode;->BATTLE_NET:Lcom/blizzard/security/srp/client/ClientConstants$Mode;
- .line 972
- .local v0, srpMode:Lcom/blizzard/security/srp/client/ClientConstants$Mode;
- :goto_0
- #v0=(Reference);
- new-instance v2, Lcom/blizzard/security/srp/client/ClientSRP;
- #v2=(UninitRef);
- invoke-direct {v2, v0}, Lcom/blizzard/security/srp/client/ClientSRP;-><init>(Lcom/blizzard/security/srp/client/ClientConstants$Mode;)V
- #v2=(Reference);
- iput-object v2, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
- .line 973
- new-instance v2, Lcom/blizzard/security/srp/client/ClientSession;
- #v2=(UninitRef);
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
- #v3=(Reference);
- invoke-direct {v2, v3}, Lcom/blizzard/security/srp/client/ClientSession;-><init>(Lcom/blizzard/security/srp/client/ClientSRP;)V
- #v2=(Reference);
- iput-object v2, p0, Lcom/blizzard/wow/net/session/Session;->srpSession:Lcom/blizzard/security/srp/client/ClientSession;
- .line 976
- .end local v0 #srpMode:Lcom/blizzard/security/srp/client/ClientConstants$Mode;
- :cond_0
- #v0=(Conflicted);v3=(Conflicted);
- const/4 v2, 0x1
- #v2=(One);
- invoke-virtual {p0, p1, v2}, Lcom/blizzard/wow/net/session/Session;->loginMessage(Ljava/lang/String;Z)Lcom/blizzard/wow/net/message/Request;
- move-result-object v1
- .line 977
- .local v1, stage1Message:Lcom/blizzard/wow/net/message/Request;
- #v1=(Reference);
- iget-object v2, v1, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
- #v2=(Reference);
- const-string v3, "clientA"
- #v3=(Reference);
- iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->srpSession:Lcom/blizzard/security/srp/client/ClientSession;
- #v4=(Reference);
- iget-object v5, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
- #v5=(Reference);
- invoke-virtual {v4, v5}, Lcom/blizzard/security/srp/client/ClientSession;->getChallenge(Lcom/blizzard/security/srp/client/ClientSRP;)Lcom/blizzard/security/srp/client/ClientSession$ClientChallenge;
- move-result-object v4
- invoke-virtual {v4}, Lcom/blizzard/security/srp/client/ClientSession$ClientChallenge;->getChallenge_A()[B
- move-result-object v4
- invoke-virtual {v2, v3, v4}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
- .line 978
- return-object v1
- .line 971
- .end local v1 #stage1Message:Lcom/blizzard/wow/net/message/Request;
- :cond_1
- #v0=(Uninit);v1=(Uninit);v2=(Integer);v3=(Integer);v4=(Uninit);v5=(Uninit);
- sget-object v0, Lcom/blizzard/security/srp/client/ClientConstants$Mode;->WOW:Lcom/blizzard/security/srp/client/ClientConstants$Mode;
- #v0=(Reference);
- goto :goto_0
- .end method
- .method private final sendAuthenticate1()V
- .locals 5
- .prologue
- const v4, 0x2000004
- .line 574
- #v4=(Integer);
- iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- #v2=(Reference);
- const v3, 0x2000002
- #v3=(Integer);
- invoke-virtual {v2, v3, v4}, Lcom/blizzard/util/State;->compareAndSet(II)Z
- move-result v2
- #v2=(Boolean);
- if-nez v2, :cond_0
- .line 576
- iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- #v2=(Reference);
- const v3, 0x2000003
- invoke-virtual {v2, v3, v4}, Lcom/blizzard/util/State;->compareAndSet(II)Z
- move-result v2
- #v2=(Boolean);
- if-eqz v2, :cond_1
- .line 579
- :cond_0
- const-string v2, "/authenticate1"
- #v2=(Reference);
- invoke-direct {p0, v2}, Lcom/blizzard/wow/net/session/Session;->prepareStage1Request(Ljava/lang/String;)Lcom/blizzard/wow/net/message/Request;
- move-result-object v0
- .line 581
- .local v0, auth1Message:Lcom/blizzard/wow/net/message/Request;
- #v0=(Reference);
- invoke-virtual {p0, v0}, Lcom/blizzard/wow/net/session/Session;->sendRequest(Lcom/blizzard/wow/net/message/Request;)Z
- move-result v1
- .line 582
- .local v1, success:Z
- #v1=(Boolean);
- if-eqz v1, :cond_2
- .line 583
- iget v2, v0, Lcom/blizzard/wow/net/message/Request;->id:I
- #v2=(Integer);
- iput v2, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
- .line 590
- .end local v0 #auth1Message:Lcom/blizzard/wow/net/message/Request;
- .end local v1 #success:Z
- :cond_1
- :goto_0
- #v0=(Conflicted);v1=(Conflicted);v2=(Conflicted);
- return-void
- .line 585
- .restart local v0 #auth1Message:Lcom/blizzard/wow/net/message/Request;
- .restart local v1 #success:Z
- :cond_2
- #v0=(Reference);v1=(Boolean);v2=(Reference);
- sget-object v2, Lcom/blizzard/wow/net/session/Session;->CONN_OPEN_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
- invoke-virtual {p0, v2}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
- goto :goto_0
- .end method
- .method private sendHardLogin2Request(Ljava/lang/String;)Z
- .locals 13
- .parameter "authenticatorToken"
- .prologue
- .line 868
- const/4 v1, 0x0
- .line 869
- .local v1, callback:Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
- #v1=(Null);
- iget-object v10, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
- #v10=(Reference);
- if-eqz v10, :cond_0
- .line 870
- iget-object v10, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
- invoke-virtual {v10}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object;
- move-result-object v1
- .end local v1 #callback:Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
- #v1=(Reference);
- check-cast v1, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
- .line 872
- .restart local v1 #callback:Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
- :cond_0
- if-nez v1, :cond_1
- .line 873
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
- .line 874
- const/4 v10, 0x0
- .line 925
- :goto_0
- #v0=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);v6=(Conflicted);v7=(Conflicted);v8=(Conflicted);v9=(Conflicted);v10=(Boolean);v11=(Conflicted);v12=(Conflicted);
- return v10
- .line 877
- :cond_1
- #v0=(Uninit);v2=(Uninit);v3=(Uninit);v4=(Uninit);v5=(Uninit);v6=(Uninit);v7=(Uninit);v8=(Uninit);v9=(Uninit);v10=(Reference);v11=(Uninit);v12=(Uninit);
- iget-object v10, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- const v11, 0x4000001
- #v11=(Integer);
- const v12, 0x4000003
- #v12=(Integer);
- invoke-virtual {v10, v11, v12}, Lcom/blizzard/util/State;->compareAndSet(II)Z
- move-result v10
- #v10=(Boolean);
- if-nez v10, :cond_2
- .line 878
- iget-object v10, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- #v10=(Reference);
- const v11, 0x4000002
- .line 879
- const v12, 0x4000003
- .line 878
- invoke-virtual {v10, v11, v12}, Lcom/blizzard/util/State;->compareAndSet(II)Z
- move-result v10
- #v10=(Boolean);
- if-eqz v10, :cond_6
- .line 880
- :cond_2
- new-instance v4, Lcom/blizzard/wow/net/message/Request;
- .line 881
- #v4=(UninitRef);
- const-string v10, "/hardLogin2"
- .line 880
- #v10=(Reference);
- invoke-direct {v4, v10}, Lcom/blizzard/wow/net/message/Request;-><init>(Ljava/lang/String;)V
- .line 882
- .local v4, hardLogin2Message:Lcom/blizzard/wow/net/message/Request;
- #v4=(Reference);
- iget-object v10, v4, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
- const-string v11, "clientProof"
- #v11=(Reference);
- iget-object v12, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginClientProof:[B
- #v12=(Reference);
- invoke-virtual {v10, v11, v12}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
- .line 883
- if-eqz p1, :cond_3
- .line 886
- :try_start_0
- iget-object v10, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
- invoke-virtual {v10}, Lcom/blizzard/security/srp/client/ClientSRP;->getDigest()Ljava/security/MessageDigest;
- move-result-object v2
- .line 888
- .local v2, digest:Ljava/security/MessageDigest;
- #v2=(Reference);
- const-string v10, "UTF-8"
- invoke-virtual {p1, v10}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B
- move-result-object v0
- .line 892
- .local v0, authenticatorBytes:[B
- #v0=(Reference);
- iget-byte v10, p0, Lcom/blizzard/wow/net/session/Session;->counter:B
- #v10=(Byte);
- add-int/lit8 v11, v10, 0x1
- #v11=(Integer);
- int-to-byte v11, v11
- #v11=(Byte);
- iput-byte v11, p0, Lcom/blizzard/wow/net/session/Session;->counter:B
- invoke-virtual {v2, v10}, Ljava/security/MessageDigest;->update(B)V
- .line 893
- iget-object v10, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- #v10=(Reference);
- invoke-virtual {v10}, Lcom/blizzard/wow/user/Account;->getSessionKey()[B
- move-result-object v10
- invoke-virtual {v2, v10}, Ljava/security/MessageDigest;->update([B)V
- .line 894
- invoke-virtual {v2}, Ljava/security/MessageDigest;->digest()[B
- move-result-object v8
- .line 895
- .local v8, xorData:[B
- #v8=(Reference);
- array-length v9, v8
- .line 897
- .local v9, xorDataSize:I
- #v9=(Integer);
- const/4 v5, 0x0
- .local v5, i:I
- #v5=(Null);
- array-length v6, v0
- .local v6, size:I
- :goto_1
- #v5=(Integer);v6=(Integer);v10=(Conflicted);
- if-lt v5, v6, :cond_4
- .line 901
- iget-object v10, v4, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
- #v10=(Reference);
- const-string v11, "authenticatorProof"
- #v11=(Reference);
- invoke-virtual {v10, v11, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
- :try_end_0
- .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
- .line 910
- .end local v0 #authenticatorBytes:[B
- .end local v2 #digest:Ljava/security/MessageDigest;
- .end local v5 #i:I
- .end local v6 #size:I
- .end local v8 #xorData:[B
- .end local v9 #xorDataSize:I
- :cond_3
- #v0=(Conflicted);v2=(Conflicted);v5=(Conflicted);v6=(Conflicted);v8=(Conflicted);v9=(Conflicted);
- invoke-virtual {p0, v4}, Lcom/blizzard/wow/net/session/Session;->sendRequest(Lcom/blizzard/wow/net/message/Request;)Z
- move-result v7
- .line 911
- .local v7, success:Z
- #v7=(Boolean);
- if-eqz v7, :cond_5
- .line 912
- iget v10, v4, Lcom/blizzard/wow/net/message/Request;->id:I
- #v10=(Integer);
- iput v10, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
- .line 914
- const/4 v10, 0x1
- #v10=(One);
- goto :goto_0
- .line 898
- .end local v7 #success:Z
- .restart local v0 #authenticatorBytes:[B
- .restart local v2 #digest:Ljava/security/MessageDigest;
- .restart local v5 #i:I
- .restart local v6 #size:I
- .restart local v8 #xorData:[B
- .restart local v9 #xorDataSize:I
- :cond_4
- :try_start_1
- #v0=(Reference);v2=(Reference);v5=(Integer);v6=(Integer);v7=(Uninit);v8=(Reference);v9=(Integer);v10=(Conflicted);v11=(Byte);
- aget-byte v10, v0, v5
- #v10=(Byte);
- rem-int v11, v5, v9
- #v11=(Integer);
- aget-byte v11, v8, v11
- #v11=(Byte);
- xor-int/2addr v10, v11
- #v10=(Integer);
- int-to-byte v10, v10
- #v10=(Byte);
- aput-byte v10, v0, v5
- :try_end_1
- .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0
- .line 897
- add-int/lit8 v5, v5, 0x1
- goto :goto_1
- .line 903
- .end local v0 #authenticatorBytes:[B
- .end local v2 #digest:Ljava/security/MessageDigest;
- .end local v5 #i:I
- .end local v6 #size:I
- .end local v8 #xorData:[B
- .end local v9 #xorDataSize:I
- :catch_0
- #v0=(Conflicted);v2=(Conflicted);v5=(Conflicted);v6=(Conflicted);v8=(Conflicted);v9=(Conflicted);v10=(Conflicted);v11=(Conflicted);
- move-exception v3
- .line 904
- .local v3, e:Ljava/lang/Exception;
- #v3=(Reference);
- sget-object v10, Lcom/blizzard/wow/net/session/Session;->TAG:Ljava/lang/String;
- #v10=(Reference);
- invoke-static {v10, v3}, Lcom/blizzard/wow/data/Util;->logStackTrace(Ljava/lang/String;Ljava/lang/Throwable;)V
- .line 905
- const/4 v10, 0x0
- #v10=(Null);
- invoke-interface {v1, v10}, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;->hardLoginFailed(Lcom/blizzard/wow/net/message/Response;)V
- .line 906
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
- .line 907
- const/4 v10, 0x0
- goto/16 :goto_0
- .line 918
- .end local v3 #e:Ljava/lang/Exception;
- .restart local v7 #success:Z
- :cond_5
- #v3=(Uninit);v7=(Boolean);v10=(Reference);v11=(Reference);
- const/4 v10, 0x0
- #v10=(Null);
- invoke-interface {v1, v10}, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;->hardLoginFailed(Lcom/blizzard/wow/net/message/Response;)V
- .line 919
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
- .line 921
- const/4 v10, 0x0
- goto/16 :goto_0
- .line 925
- .end local v4 #hardLogin2Message:Lcom/blizzard/wow/net/message/Request;
- .end local v7 #success:Z
- :cond_6
- #v0=(Uninit);v2=(Uninit);v4=(Uninit);v5=(Uninit);v6=(Uninit);v7=(Uninit);v8=(Uninit);v9=(Uninit);v10=(Boolean);v11=(Integer);v12=(Integer);
- const/4 v10, 0x0
- #v10=(Null);
- goto/16 :goto_0
- .end method
- .method private final sendReconnect1()V
- .locals 6
- .prologue
- .line 655
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- #v3=(Reference);
- const v4, 0x2000002
- .line 656
- #v4=(Integer);
- const v5, 0x2000006
- .line 655
- #v5=(Integer);
- invoke-virtual {v3, v4, v5}, Lcom/blizzard/util/State;->compareAndSet(II)Z
- move-result v3
- #v3=(Boolean);
- if-eqz v3, :cond_0
- .line 658
- new-instance v1, Ljava/security/SecureRandom;
- #v1=(UninitRef);
- invoke-direct {v1}, Ljava/security/SecureRandom;-><init>()V
- .line 659
- .local v1, srand:Ljava/security/SecureRandom;
- #v1=(Reference);
- const/16 v3, 0x20
- #v3=(PosByte);
- new-array v3, v3, [B
- #v3=(Reference);
- iput-object v3, p0, Lcom/blizzard/wow/net/session/Session;->clientSalt:[B
- .line 660
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->clientSalt:[B
- invoke-virtual {v1, v3}, Ljava/security/SecureRandom;->nextBytes([B)V
- .line 664
- const-string v3, "/reconnect1"
- const/4 v4, 0x1
- .line 663
- #v4=(One);
- invoke-virtual {p0, v3, v4}, Lcom/blizzard/wow/net/session/Session;->loginMessage(Ljava/lang/String;Z)Lcom/blizzard/wow/net/message/Request;
- move-result-object v0
- .line 665
- .local v0, reconn1Message:Lcom/blizzard/wow/net/message/Request;
- #v0=(Reference);
- iget-object v3, v0, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
- const-string v4, "clientSalt"
- #v4=(Reference);
- iget-object v5, p0, Lcom/blizzard/wow/net/session/Session;->clientSalt:[B
- #v5=(Reference);
- invoke-virtual {v3, v4, v5}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
- .line 666
- iget-object v3, v0, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
- const-string v4, "sessionCode"
- iget-object v5, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- invoke-virtual {v5}, Lcom/blizzard/wow/user/Account;->getSessionCode()Ljava/lang/String;
- move-result-object v5
- invoke-virtual {v3, v4, v5}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
- .line 668
- invoke-virtual {p0, v0}, Lcom/blizzard/wow/net/session/Session;->sendRequest(Lcom/blizzard/wow/net/message/Request;)Z
- move-result v2
- .line 669
- .local v2, success:Z
- #v2=(Boolean);
- if-eqz v2, :cond_1
- .line 670
- iget v3, v0, Lcom/blizzard/wow/net/message/Request;->id:I
- #v3=(Integer);
- iput v3, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
- .line 677
- .end local v0 #reconn1Message:Lcom/blizzard/wow/net/message/Request;
- .end local v1 #srand:Ljava/security/SecureRandom;
- .end local v2 #success:Z
- :cond_0
- :goto_0
- #v0=(Conflicted);v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);
- return-void
- .line 672
- .restart local v0 #reconn1Message:Lcom/blizzard/wow/net/message/Request;
- .restart local v1 #srand:Ljava/security/SecureRandom;
- .restart local v2 #success:Z
- :cond_1
- #v0=(Reference);v1=(Reference);v2=(Boolean);v3=(Reference);v4=(Reference);v5=(Reference);
- sget-object v3, Lcom/blizzard/wow/net/session/Session;->CONN_OPEN_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
- invoke-virtual {p0, v3}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
- goto :goto_0
- .end method
- .method private startTick()V
- .locals 4
- .prologue
- .line 172
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->tickTimerTask:Ljava/util/TimerTask;
- #v0=(Reference);
- if-nez v0, :cond_0
- .line 173
- new-instance v0, Lcom/blizzard/wow/net/session/Session$TickTimerTask;
- #v0=(UninitRef);
- const/4 v1, 0x0
- #v1=(Null);
- invoke-direct {v0, p0, v1}, Lcom/blizzard/wow/net/session/Session$TickTimerTask;-><init>(Lcom/blizzard/wow/net/session/Session;Lcom/blizzard/wow/net/session/Session$TickTimerTask;)V
- #v0=(Reference);
- iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->tickTimerTask:Ljava/util/TimerTask;
- .line 174
- invoke-virtual {p0}, Lcom/blizzard/wow/net/session/Session;->getHandler()Landroid/os/Handler;
- move-result-object v0
- iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->tickTimerTask:Ljava/util/TimerTask;
- #v1=(Reference);
- const-wide/16 v2, 0x1388
- #v2=(LongLo);v3=(LongHi);
- invoke-virtual {v0, v1, v2, v3}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
- .line 176
- :cond_0
- #v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);
- return-void
- .end method
- .method private stopTick()V
- .locals 2
- .prologue
- .line 179
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->tickTimerTask:Ljava/util/TimerTask;
- #v0=(Reference);
- if-eqz v0, :cond_0
- .line 180
- invoke-virtual {p0}, Lcom/blizzard/wow/net/session/Session;->getHandler()Landroid/os/Handler;
- move-result-object v0
- iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->tickTimerTask:Ljava/util/TimerTask;
- #v1=(Reference);
- invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V
- .line 181
- const/4 v0, 0x0
- #v0=(Null);
- iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->tickTimerTask:Ljava/util/TimerTask;
- .line 183
- :cond_0
- #v0=(Reference);v1=(Conflicted);
- return-void
- .end method
- .method static utilByteArrayCmp([B[B)Z
- .locals 6
- .parameter "a"
- .parameter "b"
- .prologue
- const/4 v3, 0x0
- .line 1062
- #v3=(Null);
- array-length v1, p0
- .line 1063
- .local v1, size_a:I
- #v1=(Integer);
- array-length v2, p1
- .line 1064
- .local v2, size_b:I
- #v2=(Integer);
- if-eq v1, v2, :cond_1
- .line 1072
- :cond_0
- :goto_0
- #v0=(Conflicted);v3=(Boolean);v4=(Conflicted);v5=(Conflicted);
- return v3
- .line 1067
- :cond_1
- #v0=(Uninit);v3=(Null);v4=(Uninit);v5=(Uninit);
- const/4 v0, 0x0
- .local v0, i:I
- :goto_1
- #v0=(Integer);v4=(Conflicted);v5=(Conflicted);
- if-lt v0, v1, :cond_2
- .line 1072
- const/4 v3, 0x1
- #v3=(One);
- goto :goto_0
- .line 1068
- :cond_2
- #v3=(Null);
- aget-byte v4, p0, v0
- #v4=(Byte);
- aget-byte v5, p1, v0
- #v5=(Byte);
- if-ne v4, v5, :cond_0
- .line 1067
- add-int/lit8 v0, v0, 0x1
- goto :goto_1
- .end method
- .method private validateStage1Response(Lcom/blizzard/wow/net/message/Response;Ljava/lang/String;)[B
- .locals 15
- .parameter "response"
- .parameter "password"
- .prologue
- .line 983
- move-object/from16 v0, p1
- #v0=(Reference);
- iget-object v1, v0, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
- #v1=(Reference);
- const-string v2, "B"
- #v2=(Reference);
- invoke-virtual {v1, v2}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
- move-result-object v6
- #v6=(Reference);
- check-cast v6, [B
- .line 984
- .local v6, B:[B
- move-object/from16 v0, p1
- iget-object v1, v0, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
- const-string v2, "salt"
- invoke-virtual {v1, v2}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
- move-result-object v5
- #v5=(Reference);
- check-cast v5, [B
- .line 985
- .local v5, salt:[B
- new-instance v3, Ljava/lang/String;
- #v3=(UninitRef);
- move-object/from16 v0, p1
- iget-object v1, v0, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
- const-string v2, "user"
- invoke-virtual {v1, v2}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
- move-result-object v1
- check-cast v1, [B
- invoke-direct {v3, v1}, Ljava/lang/String;-><init>([B)V
- .line 987
- .local v3, user:Ljava/lang/String;
- #v3=(Reference);
- const/4 v13, 0x0
- #v13=(Null);
- check-cast v13, [B
- .line 989
- .local v13, clientProof:[B
- :try_start_0
- #v13=(Reference);
- const-string v1, "/authenticate1"
- move-object/from16 v0, p1
- iget-object v2, v0, Lcom/blizzard/wow/net/message/Response;->target:Ljava/lang/String;
- invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
- move-result v1
- #v1=(Boolean);
- if-eqz v1, :cond_1
- .line 990
- iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- #v1=(Reference);
- invoke-virtual {v1}, Lcom/blizzard/wow/user/Account;->getUserHash()Ljava/lang/String;
- move-result-object v4
- .line 991
- .local v4, userHash:Ljava/lang/String;
- #v4=(Reference);
- if-eqz v4, :cond_0
- .line 992
- iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->srpSession:Lcom/blizzard/security/srp/client/ClientSession;
- iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
- invoke-virtual/range {v1 .. v6}, Lcom/blizzard/security/srp/client/ClientSession;->generateProof_M1_userhash(Lcom/blizzard/security/srp/client/ClientSRP;Ljava/lang/String;Ljava/lang/String;[B[B)[B
- move-result-object v13
- .line 1004
- .end local v4 #userHash:Ljava/lang/String;
- :goto_0
- #v1=(Conflicted);v4=(Conflicted);v7=(Conflicted);v8=(Conflicted);v9=(Conflicted);v10=(Conflicted);v11=(Conflicted);v12=(Conflicted);v14=(Conflicted);
- return-object v13
- .line 994
- .restart local v4 #userHash:Ljava/lang/String;
- :cond_0
- #v1=(Reference);v4=(Reference);v7=(Uninit);v8=(Uninit);v9=(Uninit);v10=(Uninit);v11=(Uninit);v12=(Uninit);v14=(Uninit);
- iget-object v7, p0, Lcom/blizzard/wow/net/session/Session;->srpSession:Lcom/blizzard/security/srp/client/ClientSession;
- #v7=(Reference);
- iget-object v8, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
- #v8=(Reference);
- invoke-virtual {p0}, Lcom/blizzard/wow/net/session/Session;->sessionAccountPassword()Ljava/lang/String;
- move-result-object v10
- #v10=(Reference);
- move-object v9, v3
- #v9=(Reference);
- move-object v11, v5
- #v11=(Reference);
- move-object v12, v6
- #v12=(Reference);
- invoke-virtual/range {v7 .. v12}, Lcom/blizzard/security/srp/client/ClientSession;->generateProof_M1_password(Lcom/blizzard/security/srp/client/ClientSRP;Ljava/lang/String;Ljava/lang/String;[B[B)[B
- move-result-object v13
- goto :goto_0
- .line 997
- .end local v4 #userHash:Ljava/lang/String;
- :cond_1
- #v1=(Boolean);v4=(Uninit);v7=(Uninit);v8=(Uninit);v9=(Uninit);v10=(Uninit);v11=(Uninit);v12=(Uninit);
- iget-object v7, p0, Lcom/blizzard/wow/net/session/Session;->srpSession:Lcom/blizzard/security/srp/client/ClientSession;
- #v7=(Reference);
- iget-object v8, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
- #v8=(Reference);
- move-object/from16 v0, p2
- invoke-virtual {p0, v0}, Lcom/blizzard/wow/net/session/Session;->sessionAccountPassword(Ljava/lang/String;)Ljava/lang/String;
- move-result-object v10
- #v10=(Reference);
- move-object v9, v3
- #v9=(Reference);
- move-object v11, v5
- #v11=(Reference);
- move-object v12, v6
- #v12=(Reference);
- invoke-virtual/range {v7 .. v12}, Lcom/blizzard/security/srp/client/ClientSession;->generateProof_M1_password(Lcom/blizzard/security/srp/client/ClientSRP;Ljava/lang/String;Ljava/lang/String;[B[B)[B
- :try_end_0
- .catch Lcom/blizzard/security/srp/SrpAuthenticationFailedException; {:try_start_0 .. :try_end_0} :catch_0
- move-result-object v13
- goto :goto_0
- .line 999
- :catch_0
- #v1=(Conflicted);v4=(Conflicted);v7=(Conflicted);v8=(Conflicted);v9=(Conflicted);v10=(Conflicted);v11=(Conflicted);v12=(Conflicted);
- move-exception v14
- .line 1002
- .local v14, e:Lcom/blizzard/security/srp/SrpAuthenticationFailedException;
- #v14=(Reference);
- const/4 v13, 0x0
- #v13=(Null);
- check-cast v13, [B
- #v13=(Reference);
- goto :goto_0
- .end method
- .method private final validateStage2Response(Lcom/blizzard/wow/net/message/Response;)Z
- .locals 5
- .parameter "response"
- .prologue
- .line 1009
- iget-object v3, p1, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
- #v3=(Reference);
- const-string v4, "serverProof"
- #v4=(Reference);
- invoke-virtual {v3, v4}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
- move-result-object v1
- #v1=(Reference);
- check-cast v1, [B
- .line 1010
- .local v1, serverProof:[B
- const/4 v2, 0x0
- #v2=(Null);
- check-cast v2, [B
- .line 1012
- .local v2, sessionKey:[B
- :try_start_0
- #v2=(Reference);
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->srpSession:Lcom/blizzard/security/srp/client/ClientSession;
- iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
- invoke-virtual {v3, v4, v1}, Lcom/blizzard/security/srp/client/ClientSession;->validateServerProof(Lcom/blizzard/security/srp/client/ClientSRP;[B)[B
- :try_end_0
- .catch Lcom/blizzard/security/srp/SrpAuthenticationFailedException; {:try_start_0 .. :try_end_0} :catch_0
- move-result-object v2
- .line 1018
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->srpSession:Lcom/blizzard/security/srp/client/ClientSession;
- invoke-virtual {v4}, Lcom/blizzard/security/srp/client/ClientSession;->getUserHash()Ljava/lang/String;
- move-result-object v4
- invoke-virtual {v3, v4}, Lcom/blizzard/wow/user/Account;->setUserHash(Ljava/lang/String;)V
- .line 1019
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- invoke-virtual {v3, v2}, Lcom/blizzard/wow/user/Account;->setNewSessionKey([B)V
- .line 1021
- const/4 v3, 0x1
- :goto_0
- #v0=(Conflicted);v3=(Boolean);
- return v3
- .line 1013
- :catch_0
- #v0=(Uninit);v3=(Reference);
- move-exception v0
- .line 1016
- .local v0, e:Lcom/blizzard/security/srp/SrpAuthenticationFailedException;
- #v0=(Reference);
- const/4 v3, 0x0
- #v3=(Null);
- goto :goto_0
- .end method
- # virtual methods
- .method public addListener(Lcom/blizzard/wow/net/session/SessionListener;)V
- .locals 5
- .parameter "listener"
- .prologue
- .line 251
- iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
- #v2=(Reference);
- monitor-enter v2
- .line 252
- :try_start_0
- iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
- #v1=(Reference);
- invoke-virtual {v1}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
- move-result-object v1
- :cond_0
- #v0=(Conflicted);v3=(Conflicted);
- invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
- move-result v3
- #v3=(Boolean);
- if-nez v3, :cond_1
- .line 257
- iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
- new-instance v3, Ljava/lang/ref/WeakReference;
- #v3=(UninitRef);
- iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->listenersRefQueue:Ljava/lang/ref/ReferenceQueue;
- #v4=(Reference);
- invoke-direct {v3, p1, v4}, Ljava/lang/ref/WeakReference;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
- #v3=(Reference);
- invoke-virtual {v1, v3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
- .line 251
- monitor-exit v2
- .line 259
- :goto_0
- #v4=(Conflicted);
- return-void
- .line 252
- :cond_1
- #v3=(Boolean);v4=(Uninit);
- invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
- move-result-object v0
- #v0=(Reference);
- check-cast v0, Ljava/lang/ref/Reference;
- .line 253
- .local v0, listenerRef:Ljava/lang/ref/Reference;,"Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;"
- invoke-virtual {v0}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object;
- move-result-object v3
- #v3=(Reference);
- if-ne p1, v3, :cond_0
- .line 254
- monitor-exit v2
- goto :goto_0
- .line 251
- .end local v0 #listenerRef:Ljava/lang/ref/Reference;,"Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;"
- :catchall_0
- #v0=(Conflicted);v1=(Conflicted);v3=(Conflicted);v4=(Conflicted);
- move-exception v1
- #v1=(Reference);
- monitor-exit v2
- :try_end_0
- .catchall {:try_start_0 .. :try_end_0} :catchall_0
- throw v1
- .end method
- .method public declared-synchronized cleanup()V
- .locals 2
- .prologue
- .line 234
- monitor-enter p0
- :try_start_0
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- #v0=(Reference);
- const/high16 v1, 0x100
- #v1=(Integer);
- invoke-virtual {v0, v1}, Lcom/blizzard/util/State;->set(I)Z
- .line 236
- invoke-virtual {p0}, Lcom/blizzard/wow/net/session/Session;->disconnect()V
- .line 238
- const/4 v0, 0x0
- #v0=(Null);
- iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- .line 239
- const/4 v0, 0x0
- iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
- .line 240
- const/4 v0, 0x0
- iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->srpSession:Lcom/blizzard/security/srp/client/ClientSession;
- .line 241
- const/4 v0, 0x0
- iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->clientSalt:[B
- :try_end_0
- .catchall {:try_start_0 .. :try_end_0} :catchall_0
- .line 242
- monitor-exit p0
- return-void
- .line 234
- :catchall_0
- #v0=(Conflicted);v1=(Conflicted);
- move-exception v0
- #v0=(Reference);
- monitor-exit p0
- throw v0
- .end method
- .method public declared-synchronized connect(Ljava/lang/String;ILcom/blizzard/wow/user/Account;)V
- .locals 7
- .parameter "serverHost"
- .parameter "serverPort"
- .parameter "account"
- .prologue
- const/4 v2, 0x0
- .line 282
- #v2=(Null);
- monitor-enter p0
- if-nez p3, :cond_0
- .line 283
- :try_start_0
- new-instance v3, Ljava/lang/RuntimeException;
- #v3=(UninitRef);
- const-string v4, "Account passed to Session.connect() is null."
- #v4=(Reference);
- invoke-direct {v3, v4}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
- #v3=(Reference);
- throw v3
- :try_end_0
- .catchall {:try_start_0 .. :try_end_0} :catchall_0
- .line 282
- :catchall_0
- #v0=(Conflicted);v1=(Conflicted);v2=(Integer);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);v6=(Conflicted);
- move-exception v3
- #v3=(Reference);
- monitor-exit p0
- throw v3
- .line 285
- :cond_0
- :try_start_1
- #v0=(Uninit);v1=(Uninit);v2=(Null);v3=(Uninit);v4=(Uninit);v5=(Uninit);v6=(Uninit);
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- #v3=(Reference);
- if-eqz v3, :cond_2
- .line 286
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- invoke-virtual {v3, p3}, Lcom/blizzard/wow/user/Account;->equals(Ljava/lang/Object;)Z
- move-result v3
- #v3=(Boolean);
- if-nez v3, :cond_2
- .line 288
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- #v3=(Reference);
- if-eqz v3, :cond_1
- .line 289
- const/4 v3, 0x0
- #v3=(Null);
- invoke-virtual {p0, v3}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
- .line 291
- :cond_1
- #v3=(Reference);
- const/4 v3, 0x0
- #v3=(Null);
- iput-object v3, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
- .line 292
- const/4 v3, 0x0
- iput-object v3, p0, Lcom/blizzard/wow/net/session/Session;->srpSession:Lcom/blizzard/security/srp/client/ClientSession;
- .line 294
- :cond_2
- #v3=(Conflicted);
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- #v3=(Reference);
- if-eqz v3, :cond_3
- .line 295
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- invoke-interface {v3}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->isClosed()Z
- move-result v3
- #v3=(Boolean);
- if-eqz v3, :cond_5
- .line 297
- :cond_3
- #v3=(Conflicted);
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- #v3=(Reference);
- const/high16 v4, 0x100
- #v4=(Integer);
- const/high16 v5, 0x200
- #v5=(Integer);
- invoke-virtual {v3, v4, v5}, Lcom/blizzard/util/State;->compareAndSet(II)Z
- move-result v3
- #v3=(Boolean);
- if-eqz v3, :cond_5
- .line 300
- iput-object p3, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- .line 301
- sget-object v3, Lcom/blizzard/wow/net/session/Session;->CONN_OPEN_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
- #v3=(Reference);
- iput-object v3, p0, Lcom/blizzard/wow/net/session/Session;->lastError:Lcom/blizzard/wow/net/session/Session$Error;
- .line 304
- const/4 v0, 0x0
- .line 305
- .local v0, connOpening:Z
- #v0=(Null);
- iget-boolean v3, p0, Lcom/blizzard/wow/net/session/Session;->useNioProtocolConnection:Z
- #v3=(Boolean);
- if-eqz v3, :cond_4
- const/4 v2, 0x1
- .local v2, i:I
- :cond_4
- :goto_0
- #v1=(Conflicted);v2=(Integer);v4=(Conflicted);
- if-gez v2, :cond_6
- .line 322
- :goto_1
- #v0=(Boolean);v3=(Conflicted);
- if-eqz v0, :cond_8
- .line 324
- invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
- move-result-wide v3
- .line 325
- #v3=(LongLo);v4=(LongHi);
- const-wide/16 v5, 0x7530
- #v5=(LongLo);v6=(LongHi);
- add-long/2addr v3, v5
- .line 324
- iput-wide v3, p0, Lcom/blizzard/wow/net/session/Session;->connectionTimeout:J
- .line 326
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->startTick()V
- :try_end_1
- .catchall {:try_start_1 .. :try_end_1} :catchall_0
- .line 333
- .end local v0 #connOpening:Z
- .end local v2 #i:I
- :cond_5
- :goto_2
- #v0=(Conflicted);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);v6=(Conflicted);
- monitor-exit p0
- return-void
- .line 306
- .restart local v0 #connOpening:Z
- .restart local v2 #i:I
- :cond_6
- :try_start_2
- #v0=(Null);v3=(Boolean);v5=(Integer);v6=(Uninit);
- invoke-direct {p0, p1, p2}, Lcom/blizzard/wow/net/session/Session;->initializeProtocolConnection(Ljava/lang/String;I)V
- :try_end_2
- .catchall {:try_start_2 .. :try_end_2} :catchall_0
- .line 309
- :try_start_3
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- #v3=(Reference);
- invoke-interface {v3}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->open()Z
- :try_end_3
- .catchall {:try_start_3 .. :try_end_3} :catchall_0
- .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_0
- move-result v0
- #v0=(Boolean);
- goto :goto_1
- .line 311
- :catch_0
- #v0=(Null);v3=(Conflicted);
- move-exception v1
- .line 312
- .local v1, e:Ljava/lang/Exception;
- :try_start_4
- #v1=(Reference);
- iget-boolean v3, p0, Lcom/blizzard/wow/net/session/Session;->useNioProtocolConnection:Z
- #v3=(Boolean);
- if-eqz v3, :cond_7
- .line 313
- sget-object v3, Lcom/blizzard/wow/app/ArmoryApplication;->appInstance:Lcom/blizzard/wow/app/ArmoryApplication;
- .line 314
- #v3=(Reference);
- const-string v4, "NIO open error"
- #v4=(Reference);
- const/4 v5, 0x0
- .line 313
- #v5=(Null);
- invoke-virtual {v3, v4, v5}, Lcom/blizzard/wow/app/ArmoryApplication;->analyticsTrackException(Ljava/lang/String;Z)V
- .line 317
- :cond_7
- #v3=(Conflicted);v4=(Conflicted);v5=(Integer);
- const/4 v3, 0x0
- #v3=(Null);
- iput-boolean v3, p0, Lcom/blizzard/wow/net/session/Session;->useNioProtocolConnection:Z
- .line 305
- add-int/lit8 v2, v2, -0x1
- goto :goto_0
- .line 329
- .end local v1 #e:Ljava/lang/Exception;
- :cond_8
- #v0=(Boolean);v1=(Conflicted);v3=(Conflicted);
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->connectionCloseCleanup()V
- :try_end_4
- .catchall {:try_start_4 .. :try_end_4} :catchall_0
- goto :goto_2
- .end method
- .method public disconnect()V
- .locals 3
- .prologue
- .line 353
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- .line 354
- #v0=(Reference);
- const/high16 v1, 0x100
- #v1=(Integer);
- const v2, 0x2000001
- .line 353
- #v2=(Integer);
- invoke-virtual {v0, v1, v2}, Lcom/blizzard/util/State;->compareNotMaskAndSet(II)Z
- move-result v0
- #v0=(Boolean);
- if-eqz v0, :cond_0
- .line 355
- const/4 v0, 0x0
- #v0=(Null);
- iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->lastError:Lcom/blizzard/wow/net/session/Session$Error;
- .line 356
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- #v0=(Reference);
- if-eqz v0, :cond_0
- .line 357
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- invoke-interface {v0}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->close()V
- .line 360
- :cond_0
- #v0=(Conflicted);
- return-void
- .end method
- .method protected disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
- .locals 6
- .parameter "error"
- .prologue
- const-wide/16 v4, -0x1
- .line 363
- #v4=(LongLo);v5=(LongHi);
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- .line 364
- #v0=(Reference);
- const/high16 v1, 0x100
- #v1=(Integer);
- const v2, 0x2000001
- .line 363
- #v2=(Integer);
- invoke-virtual {v0, v1, v2}, Lcom/blizzard/util/State;->compareNotMaskAndSet(II)Z
- move-result v0
- #v0=(Boolean);
- if-eqz v0, :cond_0
- .line 365
- iget-wide v0, p0, Lcom/blizzard/wow/net/session/Session;->connectionTimeout:J
- #v0=(LongLo);v1=(LongHi);
- const-wide/16 v2, 0x0
- #v2=(LongLo);v3=(LongHi);
- cmp-long v0, v0, v2
- #v0=(Byte);
- if-lez v0, :cond_1
- sget-object v0, Lcom/blizzard/wow/net/session/Session;->CONN_OPEN_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
- :goto_0
- #v0=(Reference);
- iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->lastError:Lcom/blizzard/wow/net/session/Session$Error;
- .line 366
- if-nez p1, :cond_2
- const/4 v0, 0x1
- :goto_1
- #v0=(Boolean);
- iput-boolean v0, p0, Lcom/blizzard/wow/net/session/Session;->suppressCloseCallback:Z
- .line 368
- iput-wide v4, p0, Lcom/blizzard/wow/net/session/Session;->connectionTimeout:J
- .line 369
- iput-wide v4, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
- .line 371
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- #v0=(Reference);
- if-eqz v0, :cond_0
- .line 372
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- invoke-interface {v0}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->close()V
- .line 375
- :cond_0
- #v0=(Conflicted);v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);
- return-void
- :cond_1
- #v0=(Byte);v1=(LongHi);v2=(LongLo);v3=(LongHi);
- move-object v0, p1
- .line 365
- #v0=(Reference);
- goto :goto_0
- .line 366
- :cond_2
- const/4 v0, 0x0
- #v0=(Null);
- goto :goto_1
- .end method
- .method public getAccount()Lcom/blizzard/wow/user/Account;
- .locals 1
- .prologue
- .line 434
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- #v0=(Reference);
- return-object v0
- .end method
- .method public getConnection()Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- .locals 1
- .prologue
- .line 246
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- #v0=(Reference);
- return-object v0
- .end method
- .method public getHandler()Landroid/os/Handler;
- .locals 1
- .prologue
- .line 167
- sget-object v0, Lcom/blizzard/wow/app/ArmoryApplication;->appInstance:Lcom/blizzard/wow/app/ArmoryApplication;
- #v0=(Reference);
- invoke-virtual {v0}, Lcom/blizzard/wow/app/ArmoryApplication;->getWorkerHandler()Landroid/os/Handler;
- move-result-object v0
- return-object v0
- .end method
- .method public isClosed()Z
- .locals 3
- .prologue
- .line 425
- iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- #v1=(Reference);
- invoke-virtual {v1}, Lcom/blizzard/util/State;->get()I
- move-result v1
- #v1=(Integer);
- const/high16 v2, 0x100
- #v2=(Integer);
- and-int/2addr v1, v2
- if-eqz v1, :cond_0
- const/4 v0, 0x1
- .line 426
- .local v0, isClosed:Z
- :goto_0
- #v0=(Boolean);
- return v0
- .line 425
- .end local v0 #isClosed:Z
- :cond_0
- #v0=(Uninit);
- const/4 v0, 0x0
- #v0=(Null);
- goto :goto_0
- .end method
- .method public isConnected()Z
- .locals 3
- .prologue
- .line 420
- iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- #v1=(Reference);
- invoke-virtual {v1}, Lcom/blizzard/util/State;->get()I
- move-result v1
- #v1=(Integer);
- const/high16 v2, 0x400
- #v2=(Integer);
- and-int/2addr v1, v2
- if-eqz v1, :cond_0
- const/4 v0, 0x1
- .line 421
- .local v0, isConnected:Z
- :goto_0
- #v0=(Boolean);
- return v0
- .line 420
- .end local v0 #isConnected:Z
- :cond_0
- #v0=(Uninit);
- const/4 v0, 0x0
- #v0=(Null);
- goto :goto_0
- .end method
- .method public isConnecting()Z
- .locals 3
- .prologue
- .line 415
- iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- #v1=(Reference);
- invoke-virtual {v1}, Lcom/blizzard/util/State;->get()I
- move-result v1
- #v1=(Integer);
- const/high16 v2, 0x200
- #v2=(Integer);
- and-int/2addr v1, v2
- if-eqz v1, :cond_0
- const/4 v0, 0x1
- .line 416
- .local v0, isConnecting:Z
- :goto_0
- #v0=(Boolean);
- return v0
- .line 415
- .end local v0 #isConnecting:Z
- :cond_0
- #v0=(Uninit);
- const/4 v0, 0x0
- #v0=(Null);
- goto :goto_0
- .end method
- .method public isConnectionIdle(J)Z
- .locals 5
- .parameter "threshold"
- .prologue
- const/4 v2, 0x1
- .line 475
- #v2=(One);
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- #v3=(Reference);
- if-eqz v3, :cond_0
- .line 476
- invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
- move-result-wide v0
- .line 477
- .local v0, now:J
- #v0=(LongLo);v1=(LongHi);
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- invoke-interface {v3}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->getLastReceivedTime()J
- move-result-wide v3
- #v3=(LongLo);v4=(LongHi);
- sub-long v3, v0, v3
- cmp-long v3, v3, p1
- #v3=(Byte);
- if-lez v3, :cond_1
- .line 479
- .end local v0 #now:J
- :cond_0
- :goto_0
- #v0=(Conflicted);v1=(Conflicted);v2=(Boolean);v3=(Conflicted);v4=(Conflicted);
- return v2
- .line 477
- .restart local v0 #now:J
- :cond_1
- #v0=(LongLo);v1=(LongHi);v2=(One);v3=(Byte);v4=(LongHi);
- const/4 v2, 0x0
- #v2=(Null);
- goto :goto_0
- .end method
- .method public isNotConnected()Z
- .locals 1
- .prologue
- .line 430
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- #v0=(Reference);
- if-eqz v0, :cond_0
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- invoke-interface {v0}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->isClosed()Z
- move-result v0
- #v0=(Boolean);
- if-nez v0, :cond_0
- const/4 v0, 0x0
- :goto_0
- return v0
- :cond_0
- #v0=(Conflicted);
- const/4 v0, 0x1
- #v0=(One);
- goto :goto_0
- .end method
- .method public isUsingNioApi()Z
- .locals 1
- .prologue
- .line 278
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- #v0=(Reference);
- instance-of v0, v0, Lcom/blizzard/wow/net/protocol/binary/BinaryProtocolConnectionNio;
- #v0=(Boolean);
- return v0
- .end method
- .method loginMessage(Ljava/lang/String;Z)Lcom/blizzard/wow/net/message/Request;
- .locals 6
- .parameter "target"
- .parameter "includeLoginParams"
- .prologue
- .line 1041
- const/4 v0, 0x0
- .line 1042
- .local v0, message:Lcom/blizzard/wow/net/message/Request;
- #v0=(Null);
- if-eqz p2, :cond_0
- .line 1043
- new-instance v0, Lcom/blizzard/wow/net/message/Request;
- .end local v0 #message:Lcom/blizzard/wow/net/message/Request;
- #v0=(UninitRef);
- iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->loginParams:Ljava/util/HashMap;
- #v2=(Reference);
- invoke-direct {v0, p1, v2}, Lcom/blizzard/wow/net/message/Request;-><init>(Ljava/lang/String;Ljava/util/HashMap;)V
- .line 1047
- .restart local v0 #message:Lcom/blizzard/wow/net/message/Request;
- :goto_0
- #v0=(Reference);v2=(Conflicted);
- iget-object v2, v0, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
- #v2=(Reference);
- const-string v3, "accountName"
- #v3=(Reference);
- invoke-virtual {p0}, Lcom/blizzard/wow/net/session/Session;->sessionAccountName()Ljava/lang/String;
- move-result-object v4
- #v4=(Reference);
- invoke-virtual {v2, v3, v4}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
- .line 1048
- iget-object v2, v0, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
- const-string v3, "deviceTime"
- invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
- move-result-wide v4
- #v4=(LongLo);v5=(LongHi);
- invoke-static {v4, v5}, Ljava/lang/Long;->toString(J)Ljava/lang/String;
- move-result-object v4
- #v4=(Reference);
- invoke-virtual {v2, v3, v4}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
- .line 1049
- invoke-static {}, Ljava/util/TimeZone;->getDefault()Ljava/util/TimeZone;
- move-result-object v1
- .line 1050
- .local v1, tz:Ljava/util/TimeZone;
- #v1=(Reference);
- iget-object v2, v0, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
- const-string v3, "deviceTimeZone"
- invoke-virtual {v1}, Ljava/util/TimeZone;->getRawOffset()I
- move-result v4
- #v4=(Integer);
- invoke-static {v4}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
- move-result-object v4
- #v4=(Reference);
- invoke-virtual {v2, v3, v4}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
- .line 1051
- iget-object v2, v0, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
- const-string v3, "deviceTimeZoneID"
- invoke-virtual {v1}, Ljava/util/TimeZone;->getID()Ljava/lang/String;
- move-result-object v4
- invoke-virtual {v2, v3, v4}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
- .line 1053
- return-object v0
- .line 1045
- .end local v1 #tz:Ljava/util/TimeZone;
- :cond_0
- #v0=(Null);v1=(Uninit);v2=(Uninit);v3=(Uninit);v4=(Uninit);v5=(Uninit);
- new-instance v0, Lcom/blizzard/wow/net/message/Request;
- .end local v0 #message:Lcom/blizzard/wow/net/message/Request;
- #v0=(UninitRef);
- invoke-direct {v0, p1}, Lcom/blizzard/wow/net/message/Request;-><init>(Ljava/lang/String;)V
- .restart local v0 #message:Lcom/blizzard/wow/net/message/Request;
- #v0=(Reference);
- goto :goto_0
- .end method
- .method public declared-synchronized onConnectionClosed()Z
- .locals 2
- .prologue
- .line 462
- monitor-enter p0
- const/4 v0, 0x0
- :try_start_0
- #v0=(Null);
- iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- .line 463
- const/4 v0, 0x0
- iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->clientSalt:[B
- .line 465
- const-wide/16 v0, -0x1
- #v0=(LongLo);v1=(LongHi);
- iput-wide v0, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
- .line 466
- const/4 v0, -0x1
- #v0=(Byte);
- iput v0, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
- .line 468
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->connectionCloseCleanup()V
- :try_end_0
- .catchall {:try_start_0 .. :try_end_0} :catchall_0
- .line 470
- const/4 v0, 0x1
- #v0=(One);
- monitor-exit p0
- return v0
- .line 462
- :catchall_0
- #v0=(Conflicted);v1=(Conflicted);
- move-exception v0
- #v0=(Reference);
- monitor-exit p0
- throw v0
- .end method
- .method public declared-synchronized onConnectionEstablished()Z
- .locals 3
- .prologue
- .line 443
- monitor-enter p0
- :try_start_0
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- #v0=(Reference);
- const/high16 v1, 0x200
- #v1=(Integer);
- const v2, 0x2000002
- #v2=(Integer);
- invoke-virtual {v0, v1, v2}, Lcom/blizzard/util/State;->compareAndSet(II)Z
- move-result v0
- #v0=(Boolean);
- if-eqz v0, :cond_0
- .line 446
- const-wide/16 v0, -0x1
- #v0=(LongLo);v1=(LongHi);
- iput-wide v0, p0, Lcom/blizzard/wow/net/session/Session;->connectionTimeout:J
- .line 447
- const/4 v0, 0x0
- #v0=(Null);
- iput-byte v0, p0, Lcom/blizzard/wow/net/session/Session;->counter:B
- .line 449
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- #v0=(Reference);
- invoke-virtual {v0}, Lcom/blizzard/wow/user/Account;->getSessionCode()Ljava/lang/String;
- move-result-object v0
- if-nez v0, :cond_1
- .line 451
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->sendAuthenticate1()V
- :try_end_0
- .catchall {:try_start_0 .. :try_end_0} :catchall_0
- .line 458
- :cond_0
- :goto_0
- #v0=(Conflicted);v1=(Conflicted);
- const/4 v0, 0x1
- #v0=(One);
- monitor-exit p0
- return v0
- .line 454
- :cond_1
- :try_start_1
- #v0=(Reference);v1=(LongHi);
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->sendReconnect1()V
- :try_end_1
- .catchall {:try_start_1 .. :try_end_1} :catchall_0
- goto :goto_0
- .line 443
- :catchall_0
- #v0=(Conflicted);v1=(Conflicted);v2=(Conflicted);
- move-exception v0
- #v0=(Reference);
- monitor-exit p0
- throw v0
- .end method
- .method public declared-synchronized onRequestSent(Lcom/blizzard/wow/net/message/Request;)Z
- .locals 4
- .parameter "request"
- .prologue
- .line 491
- monitor-enter p0
- :try_start_0
- iget v0, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
- #v0=(Integer);
- if-ltz v0, :cond_0
- .line 492
- iget v0, p1, Lcom/blizzard/wow/net/message/Request;->id:I
- iget v1, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
- #v1=(Integer);
- if-ne v0, v1, :cond_0
- .line 496
- invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
- move-result-wide v0
- .line 497
- #v0=(LongLo);v1=(LongHi);
- const-wide/16 v2, 0x7530
- #v2=(LongLo);v3=(LongHi);
- add-long/2addr v0, v2
- .line 496
- iput-wide v0, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
- :try_end_0
- .catchall {:try_start_0 .. :try_end_0} :catchall_0
- .line 499
- const/4 v0, 0x1
- .line 502
- :goto_0
- #v0=(Boolean);v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);
- monitor-exit p0
- return v0
- :cond_0
- #v0=(Integer);v2=(Uninit);v3=(Uninit);
- const/4 v0, 0x0
- #v0=(Null);
- goto :goto_0
- .line 491
- :catchall_0
- #v0=(Conflicted);v2=(Conflicted);v3=(Conflicted);
- move-exception v0
- #v0=(Reference);
- monitor-exit p0
- throw v0
- .end method
- .method public declared-synchronized onResponseReceived(Lcom/blizzard/wow/net/message/Response;)Z
- .locals 10
- .parameter "response"
- .prologue
- const/4 v3, 0x0
- #v3=(Null);
- const/4 v2, 0x0
- #v2=(Null);
- const/4 v9, 0x1
- .line 506
- #v9=(One);
- monitor-enter p0
- :try_start_0
- invoke-virtual {p0}, Lcom/blizzard/wow/net/session/Session;->isClosed()Z
- :try_end_0
- .catchall {:try_start_0 .. :try_end_0} :catchall_0
- move-result v1
- #v1=(Boolean);
- if-eqz v1, :cond_0
- move v1, v9
- .line 569
- :goto_0
- #v0=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);v6=(Conflicted);v7=(Conflicted);v8=(Conflicted);
- monitor-exit p0
- return v1
- .line 514
- :cond_0
- :try_start_1
- #v0=(Uninit);v2=(Null);v3=(Null);v4=(Uninit);v5=(Uninit);v6=(Uninit);v7=(Uninit);v8=(Uninit);
- invoke-virtual {p1}, Lcom/blizzard/wow/net/message/Response;->isError()Z
- move-result v1
- if-eqz v1, :cond_6
- .line 515
- iget v8, p1, Lcom/blizzard/wow/net/message/Response;->statusCode:I
- .line 516
- .local v8, statusCode:I
- #v8=(Integer);
- const/16 v1, 0x12c
- #v1=(PosShort);
- if-ne v1, v8, :cond_4
- .line 519
- const-wide/16 v4, -0x1
- #v4=(LongLo);v5=(LongHi);
- iput-wide v4, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
- .line 520
- iget-object v1, p1, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
- #v1=(Reference);
- if-eqz v1, :cond_3
- move v7, v9
- .line 521
- .local v7, hasResponseBody:Z
- :goto_1
- #v7=(Boolean);
- new-instance v0, Lcom/blizzard/wow/net/session/Session$Error;
- #v0=(UninitRef);
- const/4 v1, 0x1
- .line 522
- #v1=(One);
- if-eqz v7, :cond_1
- iget-object v2, p1, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
- #v2=(Reference);
- const-string v4, "badLogin"
- #v4=(Reference);
- invoke-virtual {v2, v4}, Ljava/util/HashMap;->containsKey(Ljava/lang/Object;)Z
- move-result v2
- .line 523
- :cond_1
- #v2=(Boolean);v4=(Conflicted);
- if-eqz v7, :cond_2
- iget-object v3, p1, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
- #v3=(Reference);
- const-string v4, "url"
- #v4=(Reference);
- invoke-virtual {v3, v4}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
- move-result-object v3
- check-cast v3, Ljava/lang/String;
- .line 524
- :cond_2
- #v4=(Conflicted);
- iget-object v4, p1, Lcom/blizzard/wow/net/message/Response;->error:Ljava/lang/String;
- #v4=(Reference);
- iget-object v5, p1, Lcom/blizzard/wow/net/message/Response;->errorDescription:Ljava/lang/String;
- .line 521
- #v5=(Reference);
- invoke-direct/range {v0 .. v5}, Lcom/blizzard/wow/net/session/Session$Error;-><init>(ZZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
- .line 527
- .local v0, sessionError:Lcom/blizzard/wow/net/session/Session$Error;
- #v0=(Reference);
- invoke-virtual {p0, v0}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
- move v1, v9
- .line 528
- goto :goto_0
- .end local v0 #sessionError:Lcom/blizzard/wow/net/session/Session$Error;
- .end local v7 #hasResponseBody:Z
- :cond_3
- #v0=(Uninit);v1=(Reference);v2=(Null);v3=(Null);v4=(LongLo);v5=(LongHi);v7=(Uninit);
- move v7, v2
- .line 520
- #v7=(Null);
- goto :goto_1
- .line 530
- :cond_4
- #v1=(PosShort);v4=(Uninit);v5=(Uninit);v7=(Uninit);
- const/16 v1, 0x12d
- if-ne v1, v8, :cond_6
- .line 533
- const-wide/16 v1, -0x1
- #v1=(LongLo);v2=(LongHi);
- iput-wide v1, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
- .line 535
- iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- #v1=(Reference);
- const/high16 v2, 0x200
- .line 536
- #v2=(Integer);
- const v3, 0x2000003
- .line 535
- #v3=(Integer);
- invoke-virtual {v1, v2, v3}, Lcom/blizzard/util/State;->compareMaskAndSet(II)Z
- move-result v1
- #v1=(Boolean);
- if-eqz v1, :cond_5
- .line 538
- iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- #v1=(Reference);
- invoke-virtual {v1}, Lcom/blizzard/wow/user/Account;->deleteSession()V
- .line 539
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->sendAuthenticate1()V
- :cond_5
- #v1=(Conflicted);
- move v1, v9
- .line 541
- #v1=(One);
- goto :goto_0
- .line 545
- .end local v8 #statusCode:I
- :cond_6
- #v1=(PosShort);v2=(Null);v3=(Null);v8=(Conflicted);
- iget v1, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
- #v1=(Integer);
- if-ltz v1, :cond_d
- .line 546
- iget v1, p1, Lcom/blizzard/wow/net/message/Response;->id:I
- iget v3, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
- #v3=(Integer);
- if-ne v1, v3, :cond_d
- .line 549
- const-wide/16 v1, -0x1
- #v1=(LongLo);v2=(LongHi);
- iput-wide v1, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
- .line 550
- const/4 v1, 0x0
- #v1=(Null);
- iput-object v1, p0, Lcom/blizzard/wow/net/session/Session;->lastError:Lcom/blizzard/wow/net/session/Session$Error;
- .line 551
- iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- #v1=(Reference);
- invoke-virtual {v1}, Lcom/blizzard/util/State;->get()I
- move-result v6
- .line 552
- .local v6, currentStatus:I
- #v6=(Integer);
- const v1, 0x2000004
- #v1=(Integer);
- if-ne v1, v6, :cond_8
- .line 553
- invoke-direct {p0, p1}, Lcom/blizzard/wow/net/session/Session;->handleAuthenticate1Response(Lcom/blizzard/wow/net/message/Response;)V
- :cond_7
- :goto_2
- move v1, v9
- .line 566
- #v1=(One);
- goto :goto_0
- .line 554
- :cond_8
- #v1=(Integer);
- const v1, 0x2000005
- if-ne v1, v6, :cond_9
- .line 555
- invoke-direct {p0, p1}, Lcom/blizzard/wow/net/session/Session;->handleAuthenticate2Response(Lcom/blizzard/wow/net/message/Response;)V
- :try_end_1
- .catchall {:try_start_1 .. :try_end_1} :catchall_0
- goto :goto_2
- .line 506
- .end local v6 #currentStatus:I
- :catchall_0
- #v0=(Conflicted);v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);v6=(Conflicted);v7=(Conflicted);
- move-exception v1
- #v1=(Reference);
- monitor-exit p0
- throw v1
- .line 556
- .restart local v6 #currentStatus:I
- :cond_9
- #v0=(Uninit);v1=(Integer);v2=(LongHi);v3=(Integer);v4=(Uninit);v5=(Uninit);v6=(Integer);v7=(Uninit);
- const v1, 0x2000006
- if-ne v1, v6, :cond_a
- .line 557
- :try_start_2
- invoke-direct {p0, p1}, Lcom/blizzard/wow/net/session/Session;->handleReconnect1Response(Lcom/blizzard/wow/net/message/Response;)V
- goto :goto_2
- .line 558
- :cond_a
- const v1, 0x2000007
- if-ne v1, v6, :cond_b
- .line 559
- invoke-direct {p0, p1}, Lcom/blizzard/wow/net/session/Session;->handleLogin(Lcom/blizzard/wow/net/message/Response;)V
- goto :goto_2
- .line 560
- :cond_b
- const v1, 0x4000001
- if-ne v1, v6, :cond_c
- .line 561
- invoke-direct {p0, p1}, Lcom/blizzard/wow/net/session/Session;->handleHardLogin1Response(Lcom/blizzard/wow/net/message/Response;)V
- goto :goto_2
- .line 562
- :cond_c
- const v1, 0x4000003
- if-ne v1, v6, :cond_7
- .line 563
- invoke-direct {p0, p1}, Lcom/blizzard/wow/net/session/Session;->handleHardLogin2Response(Lcom/blizzard/wow/net/message/Response;)V
- :try_end_2
- .catchall {:try_start_2 .. :try_end_2} :catchall_0
- goto :goto_2
- .end local v6 #currentStatus:I
- :cond_d
- #v2=(Null);v6=(Uninit);
- move v1, v2
- .line 569
- #v1=(Null);
- goto/16 :goto_0
- .end method
- .method public onSessionEstablished()V
- .locals 0
- .prologue
- .line 440
- return-void
- .end method
- .method public putLoginParam(Ljava/lang/String;Ljava/lang/String;)V
- .locals 1
- .parameter "key"
- .parameter "value"
- .prologue
- .line 1057
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->loginParams:Ljava/util/HashMap;
- #v0=(Reference);
- invoke-virtual {v0, p1, p2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
- .line 1058
- return-void
- .end method
- .method public removeListener(Lcom/blizzard/wow/net/session/SessionListener;)V
- .locals 3
- .parameter "listener"
- .prologue
- .line 262
- iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
- #v2=(Reference);
- monitor-enter v2
- .line 263
- :try_start_0
- iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
- #v1=(Reference);
- invoke-virtual {v1}, Ljava/util/ArrayList;->isEmpty()Z
- move-result v1
- #v1=(Boolean);
- if-eqz v1, :cond_0
- .line 264
- monitor-exit v2
- .line 274
- :goto_0
- #v0=(Conflicted);v1=(Conflicted);
- return-void
- .line 266
- :cond_0
- #v0=(Uninit);v1=(Boolean);
- iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
- #v1=(Reference);
- invoke-virtual {v1}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
- move-result-object v0
- .line 267
- .local v0, iter:Ljava/util/Iterator;,"Ljava/util/Iterator<Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;>;"
- :cond_1
- #v0=(Reference);
- invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
- move-result v1
- #v1=(Boolean);
- if-nez v1, :cond_2
- .line 262
- monitor-exit v2
- goto :goto_0
- .end local v0 #iter:Ljava/util/Iterator;,"Ljava/util/Iterator<Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;>;"
- :catchall_0
- #v0=(Conflicted);v1=(Conflicted);
- move-exception v1
- #v1=(Reference);
- monitor-exit v2
- :try_end_0
- .catchall {:try_start_0 .. :try_end_0} :catchall_0
- throw v1
- .line 268
- .restart local v0 #iter:Ljava/util/Iterator;,"Ljava/util/Iterator<Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;>;"
- :cond_2
- :try_start_1
- #v0=(Reference);v1=(Boolean);
- invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
- move-result-object v1
- #v1=(Reference);
- check-cast v1, Ljava/lang/ref/Reference;
- invoke-virtual {v1}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object;
- move-result-object v1
- if-ne p1, v1, :cond_1
- .line 269
- invoke-interface {v0}, Ljava/util/Iterator;->remove()V
- .line 270
- monitor-exit v2
- :try_end_1
- .catchall {:try_start_1 .. :try_end_1} :catchall_0
- goto :goto_0
- .end method
- .method public resumeHardLogin(Ljava/lang/String;)Z
- .locals 2
- .parameter "authenticatorToken"
- .prologue
- .line 856
- const v0, 0x4000002
- #v0=(Integer);
- iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- #v1=(Reference);
- invoke-virtual {v1}, Lcom/blizzard/util/State;->get()I
- move-result v1
- #v1=(Integer);
- if-ne v0, v1, :cond_0
- .line 857
- if-eqz p1, :cond_0
- .line 858
- invoke-direct {p0, p1}, Lcom/blizzard/wow/net/session/Session;->sendHardLogin2Request(Ljava/lang/String;)Z
- move-result v0
- .line 862
- :goto_0
- #v0=(Boolean);
- return v0
- .line 861
- :cond_0
- #v0=(Integer);
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
- .line 862
- const/4 v0, 0x0
- #v0=(Null);
- goto :goto_0
- .end method
- .method sendRequest(Lcom/blizzard/wow/net/message/Request;)Z
- .locals 1
- .parameter "request"
- .prologue
- .line 484
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- #v0=(Reference);
- if-eqz v0, :cond_0
- .line 485
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- invoke-interface {v0, p1}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->queueRequest(Lcom/blizzard/wow/net/message/Request;)Z
- move-result v0
- .line 487
- :goto_0
- #v0=(Boolean);
- return v0
- :cond_0
- #v0=(Reference);
- const/4 v0, 0x0
- #v0=(Null);
- goto :goto_0
- .end method
- .method sessionAccountName()Ljava/lang/String;
- .locals 2
- .prologue
- .line 1026
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- #v0=(Reference);
- iget-object v0, v0, Lcom/blizzard/wow/user/Account;->accountName:Ljava/lang/String;
- sget-object v1, Ljava/util/Locale;->ENGLISH:Ljava/util/Locale;
- #v1=(Reference);
- invoke-virtual {v0, v1}, Ljava/lang/String;->toUpperCase(Ljava/util/Locale;)Ljava/lang/String;
- move-result-object v0
- return-object v0
- .end method
- .method sessionAccountPassword()Ljava/lang/String;
- .locals 1
- .prologue
- .line 1030
- iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
- #v0=(Reference);
- iget-object v0, v0, Lcom/blizzard/wow/user/Account;->accountPassword:Ljava/lang/String;
- invoke-virtual {p0, v0}, Lcom/blizzard/wow/net/session/Session;->sessionAccountPassword(Ljava/lang/String;)Ljava/lang/String;
- move-result-object v0
- return-object v0
- .end method
- .method sessionAccountPassword(Ljava/lang/String;)Ljava/lang/String;
- .locals 2
- .parameter "accountPassword"
- .prologue
- const/16 v1, 0x10
- .line 1034
- #v1=(PosByte);
- invoke-virtual {p1}, Ljava/lang/String;->length()I
- move-result v0
- #v0=(Integer);
- if-le v0, v1, :cond_0
- .line 1035
- const/4 v0, 0x0
- #v0=(Null);
- invoke-virtual {p1, v0, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String;
- move-result-object v0
- #v0=(Reference);
- sget-object v1, Ljava/util/Locale;->ENGLISH:Ljava/util/Locale;
- #v1=(Reference);
- invoke-virtual {v0, v1}, Ljava/lang/String;->toUpperCase(Ljava/util/Locale;)Ljava/lang/String;
- move-result-object v0
- .line 1037
- :goto_0
- #v1=(Conflicted);
- return-object v0
- :cond_0
- #v0=(Integer);v1=(PosByte);
- sget-object v0, Ljava/util/Locale;->ENGLISH:Ljava/util/Locale;
- #v0=(Reference);
- invoke-virtual {p1, v0}, Ljava/lang/String;->toUpperCase(Ljava/util/Locale;)Ljava/lang/String;
- move-result-object v0
- goto :goto_0
- .end method
- .method public startHardLogin(Lcom/blizzard/wow/net/session/Session$HardLoginCallback;)Z
- .locals 6
- .parameter "callback"
- .prologue
- const/4 v2, 0x0
- .line 790
- #v2=(Null);
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
- .line 792
- if-eqz p1, :cond_0
- .line 793
- iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
- .line 794
- #v3=(Reference);
- const/high16 v4, 0x400
- #v4=(Integer);
- const v5, 0x4000001
- .line 793
- #v5=(Integer);
- invoke-virtual {v3, v4, v5}, Lcom/blizzard/util/State;->compareAndSet(II)Z
- move-result v3
- #v3=(Boolean);
- if-eqz v3, :cond_0
- .line 795
- const/4 v3, 0x0
- #v3=(Null);
- iput-object v3, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
- .line 797
- const-string v3, "/hardLogin1"
- #v3=(Reference);
- invoke-direct {p0, v3}, Lcom/blizzard/wow/net/session/Session;->prepareStage1Request(Ljava/lang/String;)Lcom/blizzard/wow/net/message/Request;
- move-result-object v0
- .line 798
- .local v0, hardLogin1Message:Lcom/blizzard/wow/net/message/Request;
- #v0=(Reference);
- invoke-virtual {p0, v0}, Lcom/blizzard/wow/net/session/Session;->sendRequest(Lcom/blizzard/wow/net/message/Request;)Z
- move-result v1
- .line 799
- .local v1, success:Z
- #v1=(Boolean);
- if-eqz v1, :cond_1
- .line 800
- iget v2, v0, Lcom/blizzard/wow/net/message/Request;->id:I
- #v2=(Integer);
- iput v2, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
- .line 808
- new-instance v2, Ljava/lang/ref/WeakReference;
- #v2=(UninitRef);
- invoke-direct {v2, p1}, Ljava/lang/ref/WeakReference;-><init>(Ljava/lang/Object;)V
- #v2=(Reference);
- iput-object v2, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
- .line 809
- const/4 v2, 0x1
- .line 812
- .end local v0 #hardLogin1Message:Lcom/blizzard/wow/net/message/Request;
- .end local v1 #success:Z
- :cond_0
- :goto_0
- #v0=(Conflicted);v1=(Conflicted);v2=(Boolean);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);
- return v2
- .line 804
- .restart local v0 #hardLogin1Message:Lcom/blizzard/wow/net/message/Request;
- .restart local v1 #success:Z
- :cond_1
- #v0=(Reference);v1=(Boolean);v2=(Null);v3=(Reference);v4=(Integer);v5=(Integer);
- invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
- goto :goto_0
- .end method
- .method protected tick(J)Z
- .locals 10
- .parameter "now"
- .prologue
- const-wide/16 v8, 0x0
- #v8=(LongLo);v9=(LongHi);
- const/4 v5, 0x0
- #v5=(Null);
- const/4 v4, 0x1
- .line 186
- #v4=(One);
- iget-wide v6, p0, Lcom/blizzard/wow/net/session/Session;->connectionTimeout:J
- #v6=(LongLo);v7=(LongHi);
- cmp-long v6, v6, v8
- #v6=(Byte);
- if-lez v6, :cond_1
- .line 187
- iget-wide v5, p0, Lcom/blizzard/wow/net/session/Session;->connectionTimeout:J
- #v5=(LongLo);v6=(LongHi);
- cmp-long v5, p1, v5
- #v5=(Byte);
- if-ltz v5, :cond_0
- .line 189
- iget-object v5, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- #v5=(Reference);
- if-eqz v5, :cond_0
- .line 190
- iget-object v5, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
- invoke-interface {v5}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->isOpen()Z
- move-result v5
- #v5=(Boolean);
- if-nez v5, :cond_0
- .line 192
- sget-object v5, Lcom/blizzard/wow/net/session/Session;->CONN_OPEN_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
- #v5=(Reference);
- invoke-virtual {p0, v5}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
- .line 229
- :cond_0
- :goto_0
- #v0=(Conflicted);v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Boolean);v5=(Conflicted);v6=(Conflicted);v7=(Conflicted);v8=(Conflicted);v9=(Conflicted);
- return v4
- .line 199
- :cond_1
- #v0=(Uninit);v1=(Uninit);v2=(Uninit);v3=(Uninit);v4=(One);v5=(Null);v6=(Byte);v7=(LongHi);v8=(LongLo);v9=(LongHi);
- iget-wide v6, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
- #v6=(LongLo);
- cmp-long v6, v6, v8
- #v6=(Byte);
- if-lez v6, :cond_4
- .line 200
- iget-wide v6, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
- #v6=(LongLo);
- const-wide/16 v8, 0x7530
- add-long/2addr v6, v8
- cmp-long v6, p1, v6
- #v6=(Byte);
- if-ltz v6, :cond_0
- .line 203
- sget-object v6, Lcom/blizzard/wow/service/ArmoryService;->serviceInstance:Lcom/blizzard/wow/service/ArmoryService;
- #v6=(Reference);
- if-eqz v6, :cond_2
- .line 204
- sget-object v6, Lcom/blizzard/wow/service/ArmoryService;->serviceInstance:Lcom/blizzard/wow/service/ArmoryService;
- invoke-virtual {v6}, Lcom/blizzard/wow/service/ArmoryService;->isWifi()Z
- move-result v6
- #v6=(Boolean);
- if-eqz v6, :cond_2
- .line 205
- sget-object v0, Lcom/blizzard/wow/app/ArmoryApplication;->appInstance:Lcom/blizzard/wow/app/ArmoryApplication;
- .line 206
- .local v0, context:Landroid/content/Context;
- #v0=(Reference);
- sget-object v6, Lcom/blizzard/wow/service/ArmoryService;->serviceInstance:Lcom/blizzard/wow/service/ArmoryService;
- .line 207
- #v6=(Reference);
- invoke-virtual {v6}, Lcom/blizzard/wow/service/ArmoryService;->getLocalServerPort()I
- move-result v2
- .line 208
- .local v2, port:I
- #v2=(Integer);
- new-instance v3, Lcom/blizzard/wow/net/session/Session$Error;
- .line 209
- #v3=(UninitRef);
- const v6, 0x7f060138
- #v6=(Integer);
- invoke-virtual {v0, v6}, Landroid/content/Context;->getString(I)Ljava/lang/String;
- move-result-object v6
- .line 211
- #v6=(Reference);
- const v7, 0x7f060155
- #v7=(Integer);
- invoke-virtual {v0, v7}, Landroid/content/Context;->getString(I)Ljava/lang/String;
- move-result-object v7
- #v7=(Reference);
- new-array v8, v4, [Ljava/lang/Object;
- .line 212
- #v8=(Reference);
- invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
- move-result-object v9
- #v9=(Reference);
- aput-object v9, v8, v5
- .line 210
- invoke-static {v7, v8}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
- move-result-object v5
- .line 208
- #v5=(Reference);
- invoke-direct {v3, v6, v5}, Lcom/blizzard/wow/net/session/Session$Error;-><init>(Ljava/lang/String;Ljava/lang/String;)V
- .line 213
- .local v3, timeoutWifiError:Lcom/blizzard/wow/net/session/Session$Error;
- #v3=(Reference);
- invoke-virtual {p0, v3}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
- goto :goto_0
- .line 215
- .end local v0 #context:Landroid/content/Context;
- .end local v2 #port:I
- .end local v3 #timeoutWifiError:Lcom/blizzard/wow/net/session/Session$Error;
- :cond_2
- #v0=(Uninit);v2=(Uninit);v3=(Uninit);v5=(Null);v6=(Conflicted);v7=(LongHi);v8=(LongLo);v9=(LongHi);
- sget-object v5, Lcom/blizzard/wow/net/session/Session;->LOGIN_TIMEOUT_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
- #v5=(Reference);
- invoke-virtual {p0, v5}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
- goto :goto_0
- .line 224
- .local v1, listenerRef:Ljava/lang/ref/Reference;,"Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;"
- :cond_3
- #v1=(Reference);v4=(Reference);v5=(Null);
- iget-object v6, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
- #v6=(Reference);
- monitor-enter v6
- .line 225
- :try_start_0
- iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
- invoke-virtual {v4, v1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
- .line 224
- monitor-exit v6
- :try_end_0
- .catchall {:try_start_0 .. :try_end_0} :catchall_0
- .line 223
- .end local v1 #listenerRef:Ljava/lang/ref/Reference;,"Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;"
- :cond_4
- #v1=(Conflicted);v4=(Conflicted);v6=(Conflicted);
- iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->listenersRefQueue:Ljava/lang/ref/ReferenceQueue;
- #v4=(Reference);
- invoke-virtual {v4}, Ljava/lang/ref/ReferenceQueue;->poll()Ljava/lang/ref/Reference;
- move-result-object v1
- .restart local v1 #listenerRef:Ljava/lang/ref/Reference;,"Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;"
- #v1=(Reference);
- if-nez v1, :cond_3
- move v4, v5
- .line 229
- #v4=(Null);
- goto :goto_0
- .line 224
- :catchall_0
- #v4=(Reference);v6=(Reference);
- move-exception v4
- :try_start_1
- monitor-exit v6
- :try_end_1
- .catchall {:try_start_1 .. :try_end_1} :catchall_0
- throw v4
- .end method
- */}
Add Comment
Please, Sign In to add comment