.class public Lorg/apache/http/impl/conn/DefaultHttpClientConnectionOperator; .super Ljava/lang/Object; .source "DefaultHttpClientConnectionOperator.java" # interfaces .implements Lorg/apache/http/conn/HttpClientConnectionOperator; # static fields .field static final SOCKET_FACTORY_REGISTRY:Ljava/lang/String; = "http.socket-factory-registry" # instance fields .field private final dnsResolver:Lorg/apache/http/conn/DnsResolver; .field private final log:Lorg/apache/commons/logging/Log; .field private final schemePortResolver:Lorg/apache/http/conn/SchemePortResolver; .field private final socketFactoryRegistry:Lorg/apache/http/config/Lookup; .annotation system Ldalvik/annotation/Signature; value = { "Lorg/apache/http/config/Lookup<", "Lorg/apache/http/conn/socket/ConnectionSocketFactory;", ">;" } .end annotation .end field # direct methods .method public constructor (Lorg/apache/http/config/Lookup;Lorg/apache/http/conn/SchemePortResolver;Lorg/apache/http/conn/DnsResolver;)V .registers 5 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lorg/apache/http/config/Lookup<", "Lorg/apache/http/conn/socket/ConnectionSocketFactory;", ">;", "Lorg/apache/http/conn/SchemePortResolver;", "Lorg/apache/http/conn/DnsResolver;", ")V" } .end annotation .line 79 invoke-direct {p0}, Ljava/lang/Object;->()V .line 69 invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v0 invoke-static {v0}, Lorg/apache/commons/logging/LogFactory;->getLog(Ljava/lang/Class;)Lorg/apache/commons/logging/Log; move-result-object v0 iput-object v0, p0, Lorg/apache/http/impl/conn/DefaultHttpClientConnectionOperator;->log:Lorg/apache/commons/logging/Log; .line 80 const-string v0, "Socket factory registry" invoke-static {p1, v0}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; .line 81 iput-object p1, p0, Lorg/apache/http/impl/conn/DefaultHttpClientConnectionOperator;->socketFactoryRegistry:Lorg/apache/http/config/Lookup; if-eqz p2, :cond_17 goto :goto_19 .line 82 :cond_17 sget-object p2, Lorg/apache/http/impl/conn/DefaultSchemePortResolver;->INSTANCE:Lorg/apache/http/impl/conn/DefaultSchemePortResolver; :goto_19 iput-object p2, p0, Lorg/apache/http/impl/conn/DefaultHttpClientConnectionOperator;->schemePortResolver:Lorg/apache/http/conn/SchemePortResolver; if-eqz p3, :cond_1e goto :goto_20 .line 84 :cond_1e sget-object p3, Lorg/apache/http/impl/conn/SystemDefaultDnsResolver;->INSTANCE:Lorg/apache/http/impl/conn/SystemDefaultDnsResolver; :goto_20 iput-object p3, p0, Lorg/apache/http/impl/conn/DefaultHttpClientConnectionOperator;->dnsResolver:Lorg/apache/http/conn/DnsResolver; return-void .end method .method private getSocketFactoryRegistry(Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/config/Lookup; .registers 3 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lorg/apache/http/protocol/HttpContext;", ")", "Lorg/apache/http/config/Lookup<", "Lorg/apache/http/conn/socket/ConnectionSocketFactory;", ">;" } .end annotation .line 90 const-string v0, "http.socket-factory-registry" invoke-interface {p1, v0}, Lorg/apache/http/protocol/HttpContext;->getAttribute(Ljava/lang/String;)Ljava/lang/Object; move-result-object p1 check-cast p1, Lorg/apache/http/config/Lookup; if-nez p1, :cond_c .line 93 iget-object p1, p0, Lorg/apache/http/impl/conn/DefaultHttpClientConnectionOperator;->socketFactoryRegistry:Lorg/apache/http/config/Lookup; :cond_c return-object p1 .end method # virtual methods .method public connect(Lorg/apache/http/conn/ManagedHttpClientConnection;Lorg/apache/http/HttpHost;Ljava/net/InetSocketAddress;ILorg/apache/http/config/SocketConfig;Lorg/apache/http/protocol/HttpContext;)V .registers 27 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation move-object/from16 v1, p0 move-object/from16 v2, p1 move-object/from16 v10, p2 move-object/from16 v11, p6 .line 106 invoke-direct {v1, v11}, Lorg/apache/http/impl/conn/DefaultHttpClientConnectionOperator;->getSocketFactoryRegistry(Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/config/Lookup; move-result-object v0 .line 107 invoke-virtual/range {p2 .. p2}, Lorg/apache/http/HttpHost;->getSchemeName()Ljava/lang/String; move-result-object v3 invoke-interface {v0, v3}, Lorg/apache/http/config/Lookup;->lookup(Ljava/lang/String;)Ljava/lang/Object; move-result-object v0 move-object v12, v0 check-cast v12, Lorg/apache/http/conn/socket/ConnectionSocketFactory; if-eqz v12, :cond_13c .line 112 invoke-virtual/range {p2 .. p2}, Lorg/apache/http/HttpHost;->getAddress()Ljava/net/InetAddress; move-result-object v0 const/4 v13, 0x0 const/4 v14, 0x1 if-eqz v0, :cond_2a new-array v0, v14, [Ljava/net/InetAddress; invoke-virtual/range {p2 .. p2}, Lorg/apache/http/HttpHost;->getAddress()Ljava/net/InetAddress; move-result-object v3 aput-object v3, v0, v13 goto :goto_34 :cond_2a iget-object v0, v1, Lorg/apache/http/impl/conn/DefaultHttpClientConnectionOperator;->dnsResolver:Lorg/apache/http/conn/DnsResolver; invoke-virtual/range {p2 .. p2}, Lorg/apache/http/HttpHost;->getHostName()Ljava/lang/String; move-result-object v3 invoke-interface {v0, v3}, Lorg/apache/http/conn/DnsResolver;->resolve(Ljava/lang/String;)[Ljava/net/InetAddress; move-result-object v0 :goto_34 move-object v15, v0 .line 114 iget-object v0, v1, Lorg/apache/http/impl/conn/DefaultHttpClientConnectionOperator;->schemePortResolver:Lorg/apache/http/conn/SchemePortResolver; invoke-interface {v0, v10}, Lorg/apache/http/conn/SchemePortResolver;->resolve(Lorg/apache/http/HttpHost;)I move-result v9 move v8, v13 .line 115 :goto_3c array-length v0, v15 if-ge v8, v0, :cond_13b .line 116 aget-object v0, v15, v8 .line 117 array-length v3, v15 sub-int/2addr v3, v14 if-ne v8, v3, :cond_48 move/from16 v16, v14 goto :goto_4a :cond_48 move/from16 v16, v13 .line 119 :goto_4a invoke-interface {v12, v11}, Lorg/apache/http/conn/socket/ConnectionSocketFactory;->createSocket(Lorg/apache/http/protocol/HttpContext;)Ljava/net/Socket; move-result-object v5 .line 120 invoke-virtual/range {p5 .. p5}, Lorg/apache/http/config/SocketConfig;->getSoTimeout()I move-result v3 invoke-virtual {v5, v3}, Ljava/net/Socket;->setSoTimeout(I)V .line 121 invoke-virtual/range {p5 .. p5}, Lorg/apache/http/config/SocketConfig;->isSoReuseAddress()Z move-result v3 invoke-virtual {v5, v3}, Ljava/net/Socket;->setReuseAddress(Z)V .line 122 invoke-virtual/range {p5 .. p5}, Lorg/apache/http/config/SocketConfig;->isTcpNoDelay()Z move-result v3 invoke-virtual {v5, v3}, Ljava/net/Socket;->setTcpNoDelay(Z)V .line 123 invoke-virtual/range {p5 .. p5}, Lorg/apache/http/config/SocketConfig;->isSoKeepAlive()Z move-result v3 invoke-virtual {v5, v3}, Ljava/net/Socket;->setKeepAlive(Z)V .line 124 invoke-virtual/range {p5 .. p5}, Lorg/apache/http/config/SocketConfig;->getRcvBufSize()I move-result v3 if-lez v3, :cond_77 .line 125 invoke-virtual/range {p5 .. p5}, Lorg/apache/http/config/SocketConfig;->getRcvBufSize()I move-result v3 invoke-virtual {v5, v3}, Ljava/net/Socket;->setReceiveBufferSize(I)V .line 127 :cond_77 invoke-virtual/range {p5 .. p5}, Lorg/apache/http/config/SocketConfig;->getSndBufSize()I move-result v3 if-lez v3, :cond_84 .line 128 invoke-virtual/range {p5 .. p5}, Lorg/apache/http/config/SocketConfig;->getSndBufSize()I move-result v3 invoke-virtual {v5, v3}, Ljava/net/Socket;->setSendBufferSize(I)V .line 131 :cond_84 invoke-virtual/range {p5 .. p5}, Lorg/apache/http/config/SocketConfig;->getSoLinger()I move-result v3 if-ltz v3, :cond_8d .line 133 invoke-virtual {v5, v14, v3}, Ljava/net/Socket;->setSoLinger(ZI)V .line 135 :cond_8d invoke-interface {v2, v5}, Lorg/apache/http/conn/ManagedHttpClientConnection;->bind(Ljava/net/Socket;)V .line 137 new-instance v7, Ljava/net/InetSocketAddress; invoke-direct {v7, v0, v9}, Ljava/net/InetSocketAddress;->(Ljava/net/InetAddress;I)V .line 138 iget-object v0, v1, Lorg/apache/http/impl/conn/DefaultHttpClientConnectionOperator;->log:Lorg/apache/commons/logging/Log; invoke-interface {v0}, Lorg/apache/commons/logging/Log;->isDebugEnabled()Z move-result v0 if-eqz v0, :cond_b1 .line 139 iget-object v0, v1, Lorg/apache/http/impl/conn/DefaultHttpClientConnectionOperator;->log:Lorg/apache/commons/logging/Log; new-instance v3, Ljava/lang/StringBuilder; const-string v4, "Connecting to " invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v3, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object v3 invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v3 invoke-interface {v0, v3}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V :cond_b1 move-object v3, v12 move/from16 v4, p4 move-object/from16 v6, p2 move-object/from16 v17, v7 move/from16 v18, v8 move-object/from16 v8, p3 move/from16 v19, v9 move-object/from16 v9, p6 .line 142 :try_start_c0 invoke-interface/range {v3 .. v9}, Lorg/apache/http/conn/socket/ConnectionSocketFactory;->connectSocket(ILjava/net/Socket;Lorg/apache/http/HttpHost;Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;Lorg/apache/http/protocol/HttpContext;)Ljava/net/Socket; move-result-object v0 .line 144 invoke-interface {v2, v0}, Lorg/apache/http/conn/ManagedHttpClientConnection;->bind(Ljava/net/Socket;)V .line 145 iget-object v0, v1, Lorg/apache/http/impl/conn/DefaultHttpClientConnectionOperator;->log:Lorg/apache/commons/logging/Log; invoke-interface {v0}, Lorg/apache/commons/logging/Log;->isDebugEnabled()Z move-result v0 if-eqz v0, :cond_e7 .line 146 iget-object v0, v1, Lorg/apache/http/impl/conn/DefaultHttpClientConnectionOperator;->log:Lorg/apache/commons/logging/Log; new-instance v3, Ljava/lang/StringBuilder; invoke-direct {v3}, Ljava/lang/StringBuilder;->()V const-string v4, "Connection established " invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v3 invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object v3 invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v3 invoke-interface {v0, v3}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V :try_end_e7 .catch Ljava/net/SocketTimeoutException; {:try_start_c0 .. :try_end_e7} :catch_108 .catch Ljava/net/ConnectException; {:try_start_c0 .. :try_end_e7} :catch_ed .catch Ljava/net/NoRouteToHostException; {:try_start_c0 .. :try_end_e7} :catch_e8 :cond_e7 return-void :catch_e8 move-exception v0 if-nez v16, :cond_ec goto :goto_10b .line 164 :cond_ec throw v0 :catch_ed move-exception v0 if-eqz v16, :cond_10b .line 155 invoke-virtual {v0}, Ljava/net/ConnectException;->getMessage()Ljava/lang/String; move-result-object v2 .line 156 const-string v3, "Connection timed out" invoke-virtual {v3, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v2 if-eqz v2, :cond_102 .line 157 new-instance v2, Lorg/apache/http/conn/ConnectTimeoutException; invoke-direct {v2, v0, v10, v15}, Lorg/apache/http/conn/ConnectTimeoutException;->(Ljava/io/IOException;Lorg/apache/http/HttpHost;[Ljava/net/InetAddress;)V throw v2 .line 159 :cond_102 new-instance v2, Lorg/apache/http/conn/HttpHostConnectException; invoke-direct {v2, v0, v10, v15}, Lorg/apache/http/conn/HttpHostConnectException;->(Ljava/io/IOException;Lorg/apache/http/HttpHost;[Ljava/net/InetAddress;)V throw v2 :catch_108 move-exception v0 if-nez v16, :cond_135 .line 167 :cond_10b :goto_10b iget-object v0, v1, Lorg/apache/http/impl/conn/DefaultHttpClientConnectionOperator;->log:Lorg/apache/commons/logging/Log; invoke-interface {v0}, Lorg/apache/commons/logging/Log;->isDebugEnabled()Z move-result v0 if-eqz v0, :cond_12f .line 168 iget-object v0, v1, Lorg/apache/http/impl/conn/DefaultHttpClientConnectionOperator;->log:Lorg/apache/commons/logging/Log; new-instance v3, Ljava/lang/StringBuilder; const-string v4, "Connect to " invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V move-object/from16 v4, v17 invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object v3 const-string v4, " timed out. Connection will be retried using another IP address" invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v3 invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v3 invoke-interface {v0, v3}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V :cond_12f add-int/lit8 v8, v18, 0x1 move/from16 v9, v19 goto/16 :goto_3c .line 151 :cond_135 new-instance v2, Lorg/apache/http/conn/ConnectTimeoutException; invoke-direct {v2, v0, v10, v15}, Lorg/apache/http/conn/ConnectTimeoutException;->(Ljava/io/IOException;Lorg/apache/http/HttpHost;[Ljava/net/InetAddress;)V throw v2 :cond_13b return-void .line 109 :cond_13c new-instance v0, Lorg/apache/http/conn/UnsupportedSchemeException; new-instance v2, Ljava/lang/StringBuilder; invoke-direct {v2}, Ljava/lang/StringBuilder;->()V invoke-virtual/range {p2 .. p2}, Lorg/apache/http/HttpHost;->getSchemeName()Ljava/lang/String; move-result-object v3 invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v2 const-string v3, " protocol is not supported" invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v2 invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v2 invoke-direct {v0, v2}, Lorg/apache/http/conn/UnsupportedSchemeException;->(Ljava/lang/String;)V throw v0 .end method .method public upgrade(Lorg/apache/http/conn/ManagedHttpClientConnection;Lorg/apache/http/HttpHost;Lorg/apache/http/protocol/HttpContext;)V .registers 7 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 179 invoke-static {p3}, Lorg/apache/http/client/protocol/HttpClientContext;->adapt(Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/client/protocol/HttpClientContext; move-result-object v0 .line 180 invoke-direct {p0, v0}, Lorg/apache/http/impl/conn/DefaultHttpClientConnectionOperator;->getSocketFactoryRegistry(Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/config/Lookup; move-result-object v0 .line 181 invoke-virtual {p2}, Lorg/apache/http/HttpHost;->getSchemeName()Ljava/lang/String; move-result-object v1 invoke-interface {v0, v1}, Lorg/apache/http/config/Lookup;->lookup(Ljava/lang/String;)Ljava/lang/Object; move-result-object v0 check-cast v0, Lorg/apache/http/conn/socket/ConnectionSocketFactory; if-eqz v0, :cond_4d .line 186 instance-of v1, v0, Lorg/apache/http/conn/socket/LayeredConnectionSocketFactory; if-eqz v1, :cond_30 .line 190 check-cast v0, Lorg/apache/http/conn/socket/LayeredConnectionSocketFactory; .line 191 invoke-interface {p1}, Lorg/apache/http/conn/ManagedHttpClientConnection;->getSocket()Ljava/net/Socket; move-result-object v1 .line 192 iget-object v2, p0, Lorg/apache/http/impl/conn/DefaultHttpClientConnectionOperator;->schemePortResolver:Lorg/apache/http/conn/SchemePortResolver; invoke-interface {v2, p2}, Lorg/apache/http/conn/SchemePortResolver;->resolve(Lorg/apache/http/HttpHost;)I move-result v2 .line 193 invoke-virtual {p2}, Lorg/apache/http/HttpHost;->getHostName()Ljava/lang/String; move-result-object p2 invoke-interface {v0, v1, p2, v2, p3}, Lorg/apache/http/conn/socket/LayeredConnectionSocketFactory;->createLayeredSocket(Ljava/net/Socket;Ljava/lang/String;ILorg/apache/http/protocol/HttpContext;)Ljava/net/Socket; move-result-object p2 .line 194 invoke-interface {p1, p2}, Lorg/apache/http/conn/ManagedHttpClientConnection;->bind(Ljava/net/Socket;)V return-void .line 187 :cond_30 new-instance p1, Lorg/apache/http/conn/UnsupportedSchemeException; new-instance p3, Ljava/lang/StringBuilder; invoke-direct {p3}, Ljava/lang/StringBuilder;->()V invoke-virtual {p2}, Lorg/apache/http/HttpHost;->getSchemeName()Ljava/lang/String; move-result-object p2 invoke-virtual {p3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p2 const-string p3, " protocol does not support connection upgrade" invoke-virtual {p2, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p2 invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p2 invoke-direct {p1, p2}, Lorg/apache/http/conn/UnsupportedSchemeException;->(Ljava/lang/String;)V throw p1 .line 183 :cond_4d new-instance p1, Lorg/apache/http/conn/UnsupportedSchemeException; new-instance p3, Ljava/lang/StringBuilder; invoke-direct {p3}, Ljava/lang/StringBuilder;->()V invoke-virtual {p2}, Lorg/apache/http/HttpHost;->getSchemeName()Ljava/lang/String; move-result-object p2 invoke-virtual {p3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p2 const-string p3, " protocol is not supported" invoke-virtual {p2, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p2 invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p2 invoke-direct {p1, p2}, Lorg/apache/http/conn/UnsupportedSchemeException;->(Ljava/lang/String;)V throw p1 .end method