Commit 6dae7988 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

openssl: fix SSL/TLS versions in verbose output

parent 577286e0
Loading
Loading
Loading
Loading
+32 −9
Original line number Diff line number Diff line
@@ -1381,20 +1381,43 @@ static void ssl_tls_trace(int direction, int ssl_ver, int content_type,
  struct SessionHandle *data;
  const char *msg_name, *tls_rt_name;
  char ssl_buf[1024];
  int  ver, msg_type, txt_len;
  char unknown[32];
  int msg_type, txt_len;
  const char *verstr;

  if(!conn || !conn->data || !conn->data->set.fdebug ||
     (direction != 0 && direction != 1))
    return;

  data = conn->data;
  ssl_ver >>= 8;
#ifdef SSL2_VERSION_MAJOR
  ver = (ssl_ver == SSL2_VERSION_MAJOR ? '2' :
         ssl_ver == SSL3_VERSION_MAJOR ? '3' : '?');
#else
  ver = ssl_ver == SSL3_VERSION_MAJOR ? '3' : '?';

  switch(ssl_ver) {
#ifdef SSL2_VERSION_MAJOR /* removed in recent versions */
  case SSL2_VERSION_MAJOR:
    verstr = "SSLv2";
    break;
#endif
#ifdef SSL3_VERSION
  case SSL3_VERSION:
    verstr = "SSLv3";
    break;
#endif
  case TLS1_VERSION:
    verstr = "TLSv1.0";
    break;
  case TLS1_1_VERSION:
    verstr = "TLSv1.1";
    break;
  case TLS1_2_VERSION:
    verstr = "TLSv1.2";
    break;
  default:
    snprintf(unknown, sizeof(unknown), "(%x)", ssl_ver);
    verstr = unknown;
    break;
  }

  ssl_ver >>= 8; /* check the upper 8 bits only below */

  /* SSLv2 doesn't seem to have TLS record-type headers, so OpenSSL
   * always pass-up content-type as 0. But the interesting message-type
@@ -1408,8 +1431,8 @@ static void ssl_tls_trace(int direction, int ssl_ver, int content_type,
  msg_type = *(char*)buf;
  msg_name = ssl_msg_type(ssl_ver, msg_type);

  txt_len = snprintf(ssl_buf, sizeof(ssl_buf), "SSLv%c, %s%s (%d):\n",
                     ver, tls_rt_name, msg_name, msg_type);
  txt_len = snprintf(ssl_buf, sizeof(ssl_buf), "%s, %s%s (%d):\n",
                     verstr, tls_rt_name, msg_name, msg_type);
  Curl_debug(data, CURLINFO_TEXT, ssl_buf, (size_t)txt_len, NULL);

  Curl_debug(data, (direction == 1) ? CURLINFO_SSL_DATA_OUT :