.class public Lorg/apache/http/impl/entity/LaxContentLengthStrategy; .super Ljava/lang/Object; .source "LaxContentLengthStrategy.java" # interfaces .implements Lorg/apache/http/entity/ContentLengthStrategy; # direct methods .method public constructor ()V .locals 0 .line 1 invoke-direct {p0}, Ljava/lang/Object;->()V return-void .end method # virtual methods .method public determineLength(Lorg/apache/http/HttpMessage;)J .locals 10 .annotation system Ldalvik/annotation/Throws; value = { Lorg/apache/http/HttpException; } .end annotation if-eqz p1, :cond_c .line 1 invoke-interface {p1}, Lorg/apache/http/HttpMessage;->getParams()Lorg/apache/http/params/HttpParams; move-result-object v0 const-string v1, "http.protocol.strict-transfer-encoding" .line 2 invoke-interface {v0, v1}, Lorg/apache/http/params/HttpParams;->isParameterTrue(Ljava/lang/String;)Z move-result v0 const-string v1, "Transfer-Encoding" .line 3 invoke-interface {p1, v1}, Lorg/apache/http/HttpMessage;->getFirstHeader(Ljava/lang/String;)Lorg/apache/http/Header; move-result-object v1 const-string v2, "Content-Length" .line 4 invoke-interface {p1, v2}, Lorg/apache/http/HttpMessage;->getFirstHeader(Ljava/lang/String;)Lorg/apache/http/Header; move-result-object v3 const/4 v4, 0x1 const-wide/16 v5, -0x1 if-eqz v1, :cond_6 .line 5 :try_start_0 invoke-interface {v1}, Lorg/apache/http/Header;->getElements()[Lorg/apache/http/HeaderElement; move-result-object p1 :try_end_0 .catch Lorg/apache/http/ParseException; {:try_start_0 .. :try_end_0} :catch_0 const-string v2, "chunked" const-string v3, "identity" if-eqz v0, :cond_2 const/4 v7, 0x0 .line 6 :goto_0 array-length v8, p1 if-ge v7, v8, :cond_2 .line 7 aget-object v8, p1, v7 invoke-interface {v8}, Lorg/apache/http/HeaderElement;->getName()Ljava/lang/String; move-result-object v8 if-eqz v8, :cond_1 .line 8 invoke-virtual {v8}, Ljava/lang/String;->length()I move-result v9 if-lez v9, :cond_1 invoke-virtual {v8, v2}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z move-result v9 if-nez v9, :cond_1 invoke-virtual {v8, v3}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z move-result v9 if-eqz v9, :cond_0 goto :goto_1 .line 9 :cond_0 new-instance p1, Lorg/apache/http/ProtocolException; new-instance v0, Ljava/lang/StringBuffer; invoke-direct {v0}, Ljava/lang/StringBuffer;->()V const-string v1, "Unsupported transfer encoding: " invoke-virtual {v0, v1}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer; invoke-virtual {v0, v8}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer; invoke-virtual {v0}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String; move-result-object v0 invoke-direct {p1, v0}, Lorg/apache/http/ProtocolException;->(Ljava/lang/String;)V throw p1 :cond_1 :goto_1 add-int/lit8 v7, v7, 0x1 goto :goto_0 .line 10 :cond_2 array-length v7, p1 .line 11 invoke-interface {v1}, Lorg/apache/http/Header;->getValue()Ljava/lang/String; move-result-object v1 invoke-virtual {v3, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z move-result v1 if-eqz v1, :cond_3 return-wide v5 :cond_3 if-lez v7, :cond_4 sub-int/2addr v7, v4 .line 12 aget-object p1, p1, v7 invoke-interface {p1}, Lorg/apache/http/HeaderElement;->getName()Ljava/lang/String; move-result-object p1 invoke-virtual {v2, p1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z move-result p1 if-eqz p1, :cond_4 const-wide/16 v0, -0x2 return-wide v0 :cond_4 if-nez v0, :cond_5 return-wide v5 .line 13 :cond_5 new-instance p1, Lorg/apache/http/ProtocolException; const-string v0, "Chunk-encoding must be the last one applied" invoke-direct {p1, v0}, Lorg/apache/http/ProtocolException;->(Ljava/lang/String;)V throw p1 :catch_0 move-exception p1 .line 14 new-instance v0, Lorg/apache/http/ProtocolException; new-instance v2, Ljava/lang/StringBuffer; invoke-direct {v2}, Ljava/lang/StringBuffer;->()V const-string v3, "Invalid Transfer-Encoding header value: " invoke-virtual {v2, v3}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer; invoke-virtual {v2, v1}, Ljava/lang/StringBuffer;->append(Ljava/lang/Object;)Ljava/lang/StringBuffer; invoke-virtual {v2}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String; move-result-object v1 invoke-direct {v0, v1, p1}, Lorg/apache/http/ProtocolException;->(Ljava/lang/String;Ljava/lang/Throwable;)V throw v0 :cond_6 if-eqz v3, :cond_b .line 15 invoke-interface {p1, v2}, Lorg/apache/http/HttpMessage;->getHeaders(Ljava/lang/String;)[Lorg/apache/http/Header; move-result-object p1 if-eqz v0, :cond_8 .line 16 array-length v1, p1 if-gt v1, v4, :cond_7 goto :goto_2 .line 17 :cond_7 new-instance p1, Lorg/apache/http/ProtocolException; const-string v0, "Multiple content length headers" invoke-direct {p1, v0}, Lorg/apache/http/ProtocolException;->(Ljava/lang/String;)V throw p1 .line 18 :cond_8 :goto_2 array-length v1, p1 sub-int/2addr v1, v4 :goto_3 if-ltz v1, :cond_a .line 19 aget-object v2, p1, v1 .line 20 :try_start_1 invoke-interface {v2}, Lorg/apache/http/Header;->getValue()Ljava/lang/String; move-result-object v3 invoke-static {v3}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J move-result-wide v0 :try_end_1 .catch Ljava/lang/NumberFormatException; {:try_start_1 .. :try_end_1} :catch_1 goto :goto_4 :catch_1 if-nez v0, :cond_9 add-int/lit8 v1, v1, -0x1 goto :goto_3 .line 21 :cond_9 new-instance p1, Lorg/apache/http/ProtocolException; const-string v0, "Invalid content length: " invoke-static {v0}, Lha/a;->a(Ljava/lang/String;)Ljava/lang/StringBuffer; move-result-object v0 invoke-interface {v2}, Lorg/apache/http/Header;->getValue()Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer; invoke-virtual {v0}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String; move-result-object v0 invoke-direct {p1, v0}, Lorg/apache/http/ProtocolException;->(Ljava/lang/String;)V throw p1 :cond_a move-wide v0, v5 :goto_4 const-wide/16 v2, 0x0 cmp-long p1, v0, v2 if-ltz p1, :cond_b return-wide v0 :cond_b return-wide v5 .line 22 :cond_c new-instance p1, Ljava/lang/IllegalArgumentException; const-string v0, "HTTP message may not be null" invoke-direct {p1, v0}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V throw p1 .end method