Tim Allison created NUTCH-3004:
----------------------------------
Summary: Avoid NPE in HttpResponse
Key: NUTCH-3004
URL: https://issues.apache.org/jira/browse/NUTCH-3004
Project: Nutch
Issue Type: Improvement
Reporter: Tim Allison
I recently deployed nutch on a FIPS enabled rhel 8 instance, and I got an NPE
in HttpResponse. When I set the log level to debug, I could see what was
happening, but it would have been better to get a meaningful exception rather
than an NPE.
The issue is that in the catch clause, the exception is propagated only if the
message is "handshake alert..." and then the reconnect fails. If the message
is not that, then the ssl socket remains null, and we get an NPE below the
source I quote here.
I think we should throw the same HTTPException that we do throw in the nested
try if the message is not "handshake alert..."
{code:java}
try {
sslsocket = getSSLSocket(socket, sockHost, sockPort);
sslsocket.startHandshake();
} catch (Exception e) {
Http.LOG.debug("SSL connection to {} failed with: {}", url,
e.getMessage());
if ("handshake alert: unrecognized_name".equals(e.getMessage())) {
try {
// Reconnect, see NUTCH-2447
socket = new Socket();
socket.setSoTimeout(http.getTimeout());
socket.connect(sockAddr, http.getTimeout());
sslsocket = getSSLSocket(socket, "", sockPort);
sslsocket.startHandshake();
} catch (Exception ex) {
String msg = "SSL reconnect to " + url + " failed with: "
+ e.getMessage();
throw new HttpException(msg);
}
}
}
socket = sslsocket;
}
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)