hardtailer / gcm

Automatically exported from code.google.com/p/gcm
Apache License 2.0
0 stars 0 forks source link

Missing Socket Timeout #42

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Try to send a message but block the network.

What is the expected output? What do you see instead?

I expect, after some time a TimeoutExceptio, instead the process wait 
forever... 

What version of the product are you using? On what operating system?
The last one.

Please provide any additional information below.
In Sender.java there is 

    HttpURLConnection conn = getConnection(url);
    conn.setDoOutput(true);
    conn.setUseCaches(false);
    conn.setFixedLengthStreamingMode(bytes.length);
    conn.setRequestMethod("POST");
    conn.setRequestProperty("Content-Type", contentType);
    conn.setRequestProperty("Authorization", "key=" + key);
    OutputStream out = conn.getOutputStream();

And get connection is defined as:
 /**
   * Gets an {@link HttpURLConnection} given an URL.
   */
  protected HttpURLConnection getConnection(String url) throws IOException {
    HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
    return conn;
  }

I think somewhere we need to put setConnectTimeout and setReadTimeout.

Original issue reported on code.google.com by l.visco...@opengate.biz on 17 Mar 2014 at 4:05

GoogleCodeExporter commented 9 years ago
I've made a little test:
blocking the network connection to android.googleapis.com using iptables with 
the following command:
sudo iptables -I OUTPUT -d 173.194.70.95 -j DROP

The code blocks in conn.getOutputStream().

In the attachment my suggestion for fixing the problem: adding a constant for 
network timeout and adding setConnectTimeout and setReadTimeout in 
getConnection method.

Original comment by l.visco...@opengate.biz on 18 Mar 2014 at 9:04

Attachments: