title: java.net.ProtocolException: unexpected end of stream
body: <p>I am facing a strange issue, and I am not able to debug it out. I have implemented a logic for uploading stream of data and am using Volley for the same, I have customized a logic little bit in <code>HurlStack</code>, <code>addBodyIfExists</code> api,so that body of type "application/octet-stream" can be handled.</p>
  
  <p>My logic is to post progress to user, so that UI can be updated indicating user progress in upload, below my logic for same.</p>
  
  <pre><code>            int toRead = length; // File length
              byte[] data = new byte[4096];
              connection.setDoOutput(true);
              if(length != -1) {
                  connection.setFixedLengthStreamingMode(length);
              } else {
                  connection.setChunkedStreamingMode(4096);
              }
  
              OutputStream os;
              int i;
              int count;
  
              os = connection.getOutputStream();
              int progress= 0;
  
                 try {
                      for(i = 0; (count= is.read(data)) &gt; 0; ++i) { // is, is not null and contains a valid input stream
                          os.write(data, 0, count); // at this line am getting unexpected end of stream
                          progress+= count;
                          if(i % 20 == 0) {
                              rs.deliverProgress(progress, 0L);
                              progress= 0;
                          }
                      }
  
                      os.flush();
                  } finally {
                      if(is != null) {
                          is.close();
                      }
  
                      if(os != null) {
                          os.close();
                      }
  
                  }
  </code></pre>
  
  <p>on executing above code am getting this, although I have verified, output stream is not null, neither do input stream, it fails in first iteration of read loop itself, am seeing it has read 4096 bytes and then trying to write the same.</p>
  
  <pre><code>java.net.ProtocolException: unexpected end of stream
              at com.android.okhttp.internal.http.HttpConnection$FixedLengthSink.close(HttpConnection.java:326)
              at com.android.okio.RealBufferedSink.close(RealBufferedSink.java:174)
              at com.android.okio.RealBufferedSink$1.close(RealBufferedSink.java:142)
  </code></pre>
  
  <p>any help in debugging above will he highly appreciated.</p>