--- old/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/common/Log.java 2017-11-30 04:04:16.271564009 -0800 +++ new/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/common/Log.java 2017-11-30 04:04:16.052544863 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,8 +25,9 @@ package jdk.incubator.http.internal.common; -import java.io.IOException; import jdk.incubator.http.HttpHeaders; + +import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.Map; @@ -36,6 +37,9 @@ import jdk.incubator.http.internal.frame.Http2Frame; import jdk.incubator.http.internal.frame.WindowUpdateFrame; +import javax.net.ssl.SNIServerName; +import javax.net.ssl.SSLParameters; + /** * -Djava.net.HttpClient.log= * errors,requests,headers, @@ -196,9 +200,9 @@ } } - public static void logResponse(String s, Object... s1) { + public static void logResponse(Supplier supplier) { if (requests()) { - logger.log(Level.INFO, "RESPONSE: " + s, s1); + logger.log(Level.INFO, "RESPONSE: " + supplier.get()); } } @@ -227,6 +231,55 @@ } } + public static void logParams(SSLParameters p) { + if (!Log.ssl()) { + return; + } + + if (p == null) { + Log.logSSL("SSLParameters: Null params"); + return; + } + + final StringBuilder sb = new StringBuilder("SSLParameters:"); + final List params = new ArrayList<>(); + if (p.getCipherSuites() != null) { + for (String cipher : p.getCipherSuites()) { + sb.append("\n cipher: {") + .append(params.size()).append("}"); + params.add(cipher); + } + } + + // SSLParameters.getApplicationProtocols() can't return null + // JDK 8 EXCL START + for (String approto : p.getApplicationProtocols()) { + sb.append("\n application protocol: {") + .append(params.size()).append("}"); + params.add(approto); + } + // JDK 8 EXCL END + + if (p.getProtocols() != null) { + for (String protocol : p.getProtocols()) { + sb.append("\n protocol: {") + .append(params.size()).append("}"); + params.add(protocol); + } + } + + if (p.getServerNames() != null) { + for (SNIServerName sname : p.getServerNames()) { + sb.append("\n server name: {") + .append(params.size()).append("}"); + params.add(sname.toString()); + } + } + sb.append('\n'); + + Log.logSSL(sb.toString(), params.toArray()); + } + public static void dumpHeaders(StringBuilder sb, String prefix, HttpHeaders headers) { if (headers != null) { Map> h = headers.map();