You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ol...@apache.org on 2004/09/18 13:34:12 UTC
cvs commit: jakarta-commons/httpclient/src/java/org/apache/commons/httpclient DefaultHttpMethodRetryHandler.java
olegk 2004/09/18 04:34:12
Modified: httpclient/src/java/org/apache/commons/httpclient
DefaultHttpMethodRetryHandler.java
Log:
Do not auto-retry methods failed due to a timeout or an SSL handshake error
Contributed by Oleg Kalnichevski
Revision Changes Path
1.2 +22 -4 jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/DefaultHttpMethodRetryHandler.java
Index: DefaultHttpMethodRetryHandler.java
===================================================================
RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/DefaultHttpMethodRetryHandler.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultHttpMethodRetryHandler.java 5 Jul 2004 22:46:58 -0000 1.1
+++ DefaultHttpMethodRetryHandler.java 18 Sep 2004 11:34:12 -0000 1.2
@@ -30,6 +30,7 @@
package org.apache.commons.httpclient;
import java.io.IOException;
+import java.io.InterruptedIOException;
/**
* The default {@link HttpMethodRetryHandler} used by {@link HttpMethod}s.
@@ -39,7 +40,16 @@
*/
public class DefaultHttpMethodRetryHandler implements HttpMethodRetryHandler {
- /** the number of times a method will be retried */
+
+ private static Class SSL_HANDSHAKE_EXCEPTION = null;
+
+ static {
+ try {
+ SSL_HANDSHAKE_EXCEPTION = Class.forName("javax.net.ssl.SSLHandshakeException");
+ } catch (ClassNotFoundException ignore) {
+ }
+ }
+ /** the number of times a method will be retried */
private int retryCount;
/** Whether or not methods that have successfully sent their request will be retried */
@@ -83,6 +93,14 @@
if (exception instanceof NoHttpResponseException) {
// Retry if the server dropped connection on us
return true;
+ }
+ if (exception instanceof InterruptedIOException) {
+ // Timeout
+ return false;
+ }
+ if (SSL_HANDSHAKE_EXCEPTION != null && SSL_HANDSHAKE_EXCEPTION.isInstance(exception)) {
+ // SSL handshake exception
+ return false;
}
if (!method.isRequestSent() || this.requestSentRetryEnabled) {
// Retry if the request has not been sent fully or
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org