hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dominik Bennersdorfer (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HTTPCLIENT-1485) Wrong type of exception raised because of hardcoded string-compare
Date Tue, 18 Mar 2014 07:17:45 GMT

    [ https://issues.apache.org/jira/browse/HTTPCLIENT-1485?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13938910#comment-13938910
] 

Dominik Bennersdorfer commented on HTTPCLIENT-1485:
---------------------------------------------------

Good morning,

i've  tested it now, results are the same for different OS and JRE.
Thats good , after timeout of 10 i get a SocketTimeoutException
{code}
SocketAddress endpoint=new InetSocketAddress("localhost", 1234); // no server on that port!
Socket sock = new Socket();
sock.connect(endpoint, 10);
{code}

with a timeout >10 and a non routable ip  e.g. 10.255.255.1 Port 80 a ConnectException
is raised.
Interesting about this is with a timeout >21 the connection always canceled after ~21 seconds
with a ConnectException.
Try yourself
{code}
SocketAddress endpoint=new InetSocketAddress("10.255.255.1", 80); // no server on that port!
Socket sock = new Socket();
sock.connect(endpoint, 50000); // ConnectException after ~21seconds
{code}

> Wrong type of exception raised because of hardcoded string-compare
> ------------------------------------------------------------------
>
>                 Key: HTTPCLIENT-1485
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1485
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: HttpClient
>    Affects Versions: 4.3.2, 4.3.3
>            Reporter: Dominik Bennersdorfer
>
> In the lines org.apache.http.impl.conn.HttpClientConnectionOperator.java:134-143 we found
that the message of the ConnectException is compared to the hardcoded string "Connection timed
out".
> This can causes wrong break down to the http-client own Exception-types on Systems with
other languages.
> } catch (final ConnectException ex) {
> 	if (last) {
> 		final String msg = ex.getMessage();
> 		if ("Connection timed out".equals(msg)) {
> 			throw new ConnectTimeoutException(ex, host, addresses);
> 		} else {
> 			throw new HttpHostConnectException(ex, host, addresses);
> 		}
> 	}
> }
> To illustrate the Problem see the following Example:
> On our server the locale is set to "de_AT.ISO-8859-15@euro" 
> with a simple wget i get this (see the message in last line)
> root@MRW-MJA-vml1:/tmp# wget http://www.google.at:81
> --2014-03-14 12:46:44--  http://www.google.at:81/
> Auflösen des Hostnamen www.google.at... 173.194.39.183
> Verbindungsaufbau zu www.google.at|173.194.39.183|:81... fehlgeschlagen: Die Wartezeit
für die Verbindung ist abgelaufen.
> after changing the locale to "en_US.ISO-8859-15" i get the following:
> root@MRW-MJA-vml1:/tmp# wget http://www.google.at:81
> --2014-03-14 12:43:33--  http://www.google.at:81/
> Resolving www.google.at... 173.194.32.223
> Connecting to www.google.at|173.194.32.223|:81... failed: Connection timed out.
> Example with httpclient 4.3.3 (parts from our tracing):
> Exception<org.apache.http.conn.HttpHostConnectException> Message<Connect to
**** failed: Die Wartezeit für die Verbindung ist abgelaufen> 
> Cause<java.net.ConnectException: Die Wartezeit für die Verbindung ist abgelaufen>

> 	at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:138)
> 	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:314)
> 	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:357)
> 	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:218)
> 	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:194)
> 	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:85)
> 	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
> 	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)
> 	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
> 	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)
> 	
> We excpected to get a ConnectTimeoutException rather than a HttpHostConnectException



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org


Mime
View raw message