code: private void serverHelloRequest(HelloRequest mesg) throws IOException {
          if (debug != null && Debug.isOn("handshake")) {
              mesg.print(System.out);
          }
  
          //
          // Could be (e.g. at connection setup) that we already
          // sent the "client hello" but the server's not seen it.
          //
          if (state < HandshakeMessage.ht_client_hello) {
              if (!secureRenegotiation && !allowUnsafeRenegotiation) {
                  // renegotiation is not allowed.
                  if (activeProtocolVersion.v >= ProtocolVersion.TLS10.v) {
                      // response with a no_renegotiation warning,
                      warningSE(Alerts.alert_no_renegotiation);
  
                      // invalidate the handshake so that the caller can
                      // dispose this object.
                      invalidated = true;
  
                      // If there is still unread block in the handshake
                      // input stream, it would be truncated with the disposal
                      // and the next handshake message will become incomplete.
                      //
                      // However, according to SSL/TLS specifications, no more
                      // handshake message should immediately follow ClientHello
                      // or HelloRequest. So just let it be.
                  } else {
                      // For SSLv3, send the handshake_failure fatal error.
                      // Note that SSLv3 does not define a no_renegotiation
                      // alert like TLSv1. However we cannot ignore the message
                      // simply, otherwise the other side was waiting for a
                      // response that would never come.
                      fatalSE(Alerts.alert_handshake_failure,
                          "Renegotiation is not allowed");
                  }
              } else {
                  if (!secureRenegotiation) {
                      if (debug != null && Debug.isOn("handshake")) {
                          System.out.println(
                              "Warning: continue with insecure renegotiation");
                      }
                  }
                  kickstart();
              }
          }
      }
docs: /*
  Used by the server to kickstart negotiations -- this requests a
  "client hello" to renegotiate current cipher specs (e.g. maybe lots
  of data has been encrypted with the same keys, or the server needs
  the client to present a certificate).