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)

Reply via email to