Update okhttp to commit c84d84d1ca6911534fe993e
- Fixes a couple of test cases in URLConnectionTest
related to null header values.
- Fixes a locking related crash observed in tests.
Change-Id: I8c48f29b33e3509d177c5ffb7d8b772dc97d8174
diff --git a/pom.xml b/pom.xml
index 0afcaa6..a36c2e6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,134 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright (C) 2012 Square, Inc.
- Copyright (C) 2012 The Android Open Source Project
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
+ <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.sonatype.oss</groupId>
- <artifactId>oss-parent</artifactId>
- <version>7</version>
- </parent>
- <groupId>com.squareup</groupId>
- <artifactId>okhttp</artifactId>
- <version>0.9-SNAPSHOT</version>
- <packaging>jar</packaging>
+ <parent>
+ <groupId>com.squareup.okhttp</groupId>
+ <artifactId>parent</artifactId>
+ <version>1.0.3-SNAPSHOT</version>
+ </parent>
- <name>okhttp</name>
- <description>An HTTP+SPDY client for Android and Java applications</description>
- <url>https://github.com/square/okhttp</url>
+ <artifactId>okhttp</artifactId>
+ <name>OkHttp</name>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <dependencies>
+ <dependency>
+ <groupId>org.mortbay.jetty.npn</groupId>
+ <artifactId>npn-boot</artifactId>
+ <optional>true</optional>
+ </dependency>
- <!-- Compilation -->
- <java.version>1.6</java.version>
- <npn.version>8.1.2.v20120308</npn.version>
- <mockwebserver.version>20130122</mockwebserver.version>
- <bouncycastle.version>1.47</bouncycastle.version>
-
- <!-- Test Dependencies -->
- <junit.version>4.10</junit.version>
- </properties>
-
- <scm>
- <url>https://github.com/square/okhttp/</url>
- <connection>scm:git:https://github.com/square/okhttp.git</connection>
- <developerConnection>scm:git:git@github.com:square/okhttp.git</developerConnection>
- </scm>
-
- <issueManagement>
- <system>GitHub Issues</system>
- <url>https://github.com/square/okhttp/issues</url>
- </issueManagement>
-
- <licenses>
- <license>
- <name>Apache 2.0</name>
- <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
- </license>
- </licenses>
-
- <dependencies>
- <dependency>
- <groupId>org.mortbay.jetty.npn</groupId>
- <artifactId>npn-boot</artifactId>
- <version>${npn.version}</version>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>com.google.mockwebserver</groupId>
- <artifactId>mockwebserver</artifactId>
- <version>${mockwebserver.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>${junit.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcprov-jdk15on</artifactId>
- <version>${bouncycastle.version}</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>2.5</version>
- <configuration>
- <source>${java.version}</source>
- <target>${java.version}</target>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-checkstyle-plugin</artifactId>
- <version>2.9.1</version>
- <configuration>
- <failsOnError>true</failsOnError>
- <configLocation>checkstyle.xml</configLocation>
- <consoleOutput>true</consoleOutput>
- <excludes>**/OsConstants.java</excludes>
- </configuration>
- <executions>
- <execution>
- <phase>verify</phase>
- <goals>
- <goal>checkstyle</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>2.9</version>
- <configuration>
- <argLine>-Xbootclasspath/p:${settings.localRepository}/org/mortbay/jetty/npn/npn-boot/${npn.version}/npn-boot-${npn.version}.jar</argLine>
- </configuration>
- </plugin>
- </plugins>
- </build>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.bouncycastle</groupId>
+ <artifactId>bcprov-jdk15on</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.google.mockwebserver</groupId>
+ <artifactId>mockwebserver</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
</project>
-
diff --git a/src/main/java/com/squareup/okhttp/internal/http/HttpURLConnectionImpl.java b/src/main/java/com/squareup/okhttp/internal/http/HttpURLConnectionImpl.java
index c7d75a9..f8c5e9a 100644
--- a/src/main/java/com/squareup/okhttp/internal/http/HttpURLConnectionImpl.java
+++ b/src/main/java/com/squareup/okhttp/internal/http/HttpURLConnectionImpl.java
@@ -24,6 +24,7 @@
import com.squareup.okhttp.Route;
import com.squareup.okhttp.internal.AbstractOutputStream;
import com.squareup.okhttp.internal.FaultRecoveringOutputStream;
+import com.squareup.okhttp.internal.Platform;
import com.squareup.okhttp.internal.Util;
import java.io.FileNotFoundException;
import java.io.IOException;
@@ -552,6 +553,16 @@
if (field == null) {
throw new NullPointerException("field == null");
}
+ if (newValue == null) {
+ // Silently ignore null header values for backwards compatibility with older
+ // android versions as well as with other URLConnection implementations.
+ //
+ // Some implementations send a malformed HTTP header when faced with
+ // such requests, we respect the spec and ignore the header.
+ Platform.get().logW("Ignoring header " + field + " because its value was null.");
+ return;
+ }
+
if ("X-Android-Transports".equals(field)) {
setTransports(newValue, false /* append */);
} else {
@@ -566,6 +577,15 @@
if (field == null) {
throw new NullPointerException("field == null");
}
+ if (value == null) {
+ // Silently ignore null header values for backwards compatibility with older
+ // android versions as well as with other URLConnection implementations.
+ //
+ // Some implementations send a malformed HTTP header when faced with
+ // such requests, we respect the spec and ignore the header.
+ Platform.get().logW("Ignoring header " + field + " because its value was null.");
+ return;
+ }
if ("X-Android-Transports".equals(field)) {
setTransports(value, true /* append */);
@@ -579,10 +599,6 @@
* When append == false, we require that the transport list contains "http/1.1".
*/
private void setTransports(String transportsString, boolean append) {
- if (transportsString == null) {
- throw new NullPointerException("transportsString == null");
- }
-
String[] transports = transportsString.split(",", -1);
ArrayList<String> transportsList = new ArrayList<String>();
if (!append) {
diff --git a/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java b/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java
index 299da8e..b8d2ff5 100644
--- a/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java
+++ b/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java
@@ -524,7 +524,7 @@
// reads to 'settings'. We synchronize on 'stream' to guard the state change.
// And we need to acquire the 'stream' lock first, since that may block.
synchronized (stream) {
- synchronized (this) {
+ synchronized (SpdyConnection.this) {
stream.receiveSettings(settings);
}
}