comparison src/org/tmatesoft/hg/internal/remote/HttpConnector.java @ 697:24f4efedc9d5

Respect the fact ssh and http protocols use different compression approach to sent changegroup data
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Tue, 06 Aug 2013 13:34:34 +0200
parents 9859fcea475d
children 822f3a83ff57
comparison
equal deleted inserted replaced
696:5b5d199e2eb3 697:24f4efedc9d5
17 package org.tmatesoft.hg.internal.remote; 17 package org.tmatesoft.hg.internal.remote;
18 18
19 import static org.tmatesoft.hg.util.LogFacility.Severity.Info; 19 import static org.tmatesoft.hg.util.LogFacility.Severity.Info;
20 20
21 import java.io.BufferedReader; 21 import java.io.BufferedReader;
22 import java.io.ByteArrayInputStream;
22 import java.io.FilterOutputStream; 23 import java.io.FilterOutputStream;
23 import java.io.IOException; 24 import java.io.IOException;
24 import java.io.InputStream; 25 import java.io.InputStream;
25 import java.io.InputStreamReader; 26 import java.io.InputStreamReader;
26 import java.io.OutputStream; 27 import java.io.OutputStream;
28 import java.io.SequenceInputStream;
27 import java.net.HttpURLConnection; 29 import java.net.HttpURLConnection;
28 import java.net.MalformedURLException; 30 import java.net.MalformedURLException;
29 import java.net.URL; 31 import java.net.URL;
30 import java.net.URLConnection; 32 import java.net.URLConnection;
31 import java.security.cert.CertificateException; 33 import java.security.cert.CertificateException;
259 conn = setupConnection(u.openConnection()); 261 conn = setupConnection(u.openConnection());
260 conn.connect(); 262 conn.connect();
261 if (debug) { 263 if (debug) {
262 dumpResponseHeader(u); 264 dumpResponseHeader(u);
263 } 265 }
264 return conn.getInputStream(); 266 InputStream cg = conn.getInputStream();
265 } catch (MalformedURLException ex) { // XXX in fact, this exception might be better to be re-thrown as RuntimeEx, 267 InputStream prefix = new ByteArrayInputStream("HG10GZ".getBytes()); // didn't see any other that zip
266 // as there's little user can do about this issue (URLs are constructed by our code) 268 return new SequenceInputStream(prefix, cg);
269 } catch (MalformedURLException ex) {
270 // although there's little user can do about this issue (URLs are constructed by our code)
271 // it's still better to throw it as checked exception than RT because url is likely malformed due to parameters
272 // and this may help user to understand the cause (and e.g. change them)
267 throw new HgRemoteConnectionException("Bad URL", ex).setRemoteCommand("changegroup").setServerInfo(getServerLocation()); 273 throw new HgRemoteConnectionException("Bad URL", ex).setRemoteCommand("changegroup").setServerInfo(getServerLocation());
268 } catch (IOException ex) { 274 } catch (IOException ex) {
269 throw new HgRemoteConnectionException("Communication failure", ex).setRemoteCommand("changegroup").setServerInfo(getServerLocation()); 275 throw new HgRemoteConnectionException("Communication failure", ex).setRemoteCommand("changegroup").setServerInfo(getServerLocation());
270 } 276 }
271 } 277 }