Skip to content

Commit ac615ae

Browse files
authored
Merge pull request #765 from bnfleb/issue752
New Heritrix status for SSLHandshakeException
2 parents f261b5b + 33984a6 commit ac615ae

4 files changed

Lines changed: 11 additions & 2 deletions

File tree

modules/src/main/java/org/archive/modules/CrawlURI.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,8 @@ public static String fetchStatusCodesToString(int code){
396396
case S_PROCESSING_THREAD_KILLED:
397397
return "Heritrix(" + S_PROCESSING_THREAD_KILLED + ")-" +
398398
"Processing thread killed";
399+
case S_SSL_ERROR:
400+
return "Heritrix(" + S_SSL_ERROR + ")-SSL error";
399401
// Unknown return code
400402
default : return Integer.toString(code);
401403
}

modules/src/main/java/org/archive/modules/fetcher/FetchHTTP.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import static org.archive.modules.fetcher.FetchStatusCodes.S_CONNECT_LOST;
2626
import static org.archive.modules.fetcher.FetchStatusCodes.S_DOMAIN_PREREQUISITE_FAILURE;
2727
import static org.archive.modules.fetcher.FetchStatusCodes.S_UNFETCHABLE_URI;
28+
import static org.archive.modules.fetcher.FetchStatusCodes.S_SSL_ERROR;
2829
import static org.archive.modules.recrawl.RecrawlAttributeConstants.A_REFERENCE_LENGTH;
2930

3031
import java.io.IOException;
@@ -42,9 +43,9 @@
4243
import java.util.logging.Logger;
4344

4445
import javax.net.ssl.SSLContext;
46+
import javax.net.ssl.SSLHandshakeException;
4547
import javax.net.ssl.TrustManager;
4648

47-
import org.archive.url.URIException;
4849
import org.apache.commons.lang3.StringUtils;
4950
import org.apache.http.Header;
5051
import org.apache.http.HttpHeaders;
@@ -82,6 +83,7 @@
8283
import org.archive.modules.net.CrawlHost;
8384
import org.archive.modules.net.CrawlServer;
8485
import org.archive.modules.net.ServerCache;
86+
import org.archive.url.URIException;
8587
import org.archive.util.Recorder;
8688
import org.springframework.beans.factory.annotation.Autowired;
8789
import org.springframework.context.Lifecycle;
@@ -681,6 +683,9 @@ protected void innerProcess(final CrawlURI curi) throws InterruptedException {
681683
} catch (ClientProtocolException e) {
682684
failedExecuteCleanup(curi, e);
683685
return;
686+
} catch (SSLHandshakeException e) {
687+
cleanup(curi, e, "executeMethod", S_SSL_ERROR);
688+
return;
684689
} catch (IOException e) {
685690
if ("handshake alert: unrecognized_name".equals(e.getMessage())) {
686691
req.setDisableSNI(true);

modules/src/main/java/org/archive/modules/fetcher/FetchStatusCodes.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ public interface FetchStatusCodes {
4949
public static final int S_UNFETCHABLE_URI = -7; //
5050
/** multiple retries all failed */
5151
public static final int S_TOO_MANY_RETRIES = -8; //
52+
/** SSL error such as SSL handshake failure */
53+
public static final int S_SSL_ERROR = -9; //
5254

5355
/** temporary status assigned URIs awaiting preconditions; appearance in
5456
* logs is a bug */

modules/src/test/java/org/archive/modules/fetcher/FetchHTTPTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -728,7 +728,7 @@ public void testSslTrustLevel() throws Exception {
728728
fetcher().process(curi);
729729
assertEquals(1, curi.getNonFatalFailures().size());
730730
assertTrue(curi.getNonFatalFailures().toArray()[0] instanceof SSLException);
731-
assertEquals(FetchStatusCodes.S_CONNECT_FAILED, curi.getFetchStatus());
731+
assertEquals(FetchStatusCodes.S_SSL_ERROR, curi.getFetchStatus());
732732
assertEquals(0, curi.getFetchCompletedTime());
733733
}
734734

0 commit comments

Comments
 (0)