Mercurial > hg4j
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 } |