Condition Coverage

blib/lib/IO/Socket/SSL.pm
Criterion Covered Total %
condition 365 677 53.9


and 2 conditions

line l !l condition
1512 7 0 !defined($written) && $SSL_ERROR == 104523711983568 && 2
2461 0 2 $check_partial_chain && 1

and 3 conditions

line !l l&&!r l&&r condition
88 0 0 89 defined &Net::SSLeay::P_next_proto_negotiated && !&Net::SSLeay::constant('LIBRESSL_VERSION_NUMBER')
93 0 0 0 defined &Net::SSLeay::CTX_set_tmp_ecdh && ($openssl_version != 268439631 || length pack('P', 0) == 4)
106 0 0 89 $can_ecdh && $openssl_version >= 268443648
108 0 0 89 defined &Net::SSLeay::OCSP_cert2ids && ($netssleay_version < 1.75 || $netssleay_version > 1.77)
111 0 0 89 $can_ocsp && defined &Net::SSLeay::set_tlsext_status_type
113 0 0 89 defined &Net::SSLeay::CTX_set_tlsext_ticket_getkey_cb && $netssleay_version >= 1.8
124 0 0 89 $session_upref and defined &Net::SSLeay::CTX_sess_set_new_cb
0 0 89 $session_upref and defined &Net::SSLeay::CTX_sess_set_new_cb and defined &Net::SSLeay::CTX_sess_set_remove_cb
133 0 0 89 defined &Net::SSLeay::CTX_get0_param && eval { do { Net::SSLeay::X509_V_FLAG_PARTIAL_CHAIN() } }
533 54 0 0 not %default_ca and do { local $SIG{'__DIE__'}; eval { do { require Mozilla::CA; 1 } } }
658 0 0 72 $IOCLASS eq "IO::Socket::IP" and not defined $arg_hash->{'GetAddrInfoFlags'}
663 125 0 2 defined $blocking and not $blocking
733 82 0 15 defined $sh and not $sh
752 197 0 0 $args->{'SSL_usebio'} and not $biosock
842 185 5 7 $ctx->{'session_cache'} and my $session = $ctx->{'session_cache'}->get_session($arg_hash->{'SSL_session_key'})
856 188 0 11 defined $timeout and $timeout > 0
188 0 11 defined $timeout and $timeout > 0 and $self->blocking(0)
866 188 0 11 defined $timeout && time
877 34 17 18 not $err and $dobio
973 162 0 0 not %sess_cb and $ctx->{'session_cache'}
0 0 0 not %sess_cb and $ctx->{'session_cache'} and my $session = &Net::SSLeay::get1_session($ssl)
1024 48 0 19 defined $sh and not $sh
1042 0 0 0 $usebio and not $biosock
1054 80 9 48 @_ && UNIVERSAL::isa($_[0], 'IO::Handle')
1092 123 0 14 defined $timeout and $timeout > 0
123 0 14 defined $timeout and $timeout > 0 and $socket->blocking(0)
1101 123 0 14 defined $timeout && time
1111 17 20 9 not $err and $dobio
1301 0 0 0 $ssleay_set_msg_callback and my $ssl = do { *$self }->{'_SSL_object'}
1312 501 0 218 @_ and $auto_retry
1342 16 8 0 not $! and $err == $Net_SSLeay_ERROR_SSL || $err == $Net_SSLeay_ERROR_SYSCALL
1408 2 1 0 $biosock and UNIVERSAL::can($biosock, "peek")
1423 0 0 6 !$rc && do { *$self }->{'_SSL_object'}
1443 2 1 6167 !$rc && do { *$self }->{'_SSL_object'}
1460 1 5 88 !$rc && do { *$self }->{'_SSL_object'}
1468 5 0 0 $fd and UNIVERSAL::can($fd, "peek")
1495 63 0 0 not $written and $errs
1530 0 0 64 !$wc && do { *$self }->{'_SSL_object'}
1553 5 1 9553 !$wc && do { *$self }->{'_SSL_object'}
1660 25 0 62 $pending and (my $pb = &Net::SSLeay::peek($ssl, $pending)) ne ""
1694 3 57 2 $eod and $delim1 eq '' || $eod < length $buf
1749 115 28 52 $status & 1 and $status & 2 || $stop_args->{'SSL_fast_shutdown'}
1773 0 0 2 not $err and $dobio
1825 257 0 2 $stop_args->{'SSL_ctx_free'} and my $ctx = delete do { *$self }->{'_SSL_ctx'}
1869 24 320 310 $keys->{'_SSL_object'} and my $ssl = do { *$self }->{'_SSL_object'}
1876 91 529 34 $keys->{'_SSL_certificate'} and my $cert = delete do { *$self }->{'_SSL_certificate'}
1888 343 5 306 $untie and not do { *$self }->{'_SSL_bio_socket'}
1912 0 0 0 $ctx_object && $ctx_object->{'context'}
2009 0 0 0 @chain and not $self->peer_certificate
2050 79 0 0 $reload and do { *$self }->{'_SSL_certificate'}
2232 106 66 116 $wtyp eq "anywhere" and $name =~ /^([a-zA-Z0-9_\-]*)\*(.+)/
76 70 26 $wtyp =~ /^(?:full_label|leftmost)$/ and $name =~ /^\*(\..+)$/
2233 82 30 4 $1 ne "" and substr($identity, 0, 4) eq "xn--"
2256 248 46 53 $ipn and $type == GEN_IPADD()
46 47 201 not $ipn and $type == GEN_DNS()
2269 0 14 87 $scheme->{'check_cn'} eq "when_only" and not $alt_dnsNames
2367 0 0 52 ref $self && do { *$self }->{'_SSL_last_err'}
2376 50 0 1 defined $error_trap and ref $error_trap eq "CODE"
2413 84 2 17 not ref $self and $CURRENT_SSL_OBJECT
2575 1 4 0 IO::Handle::opened($self) && do { *$self }->{'_SSL_opened'}
2691 102 179 6 not $is_server || defined $arg_hash->{'SSL_use_cert'} and grep {$arg_hash->{$_};} "SSL_cert", "SSL_cert_file"
281 0 6 not $is_server || defined $arg_hash->{'SSL_use_cert'} and grep {$arg_hash->{$_};} "SSL_cert", "SSL_cert_file" and grep {$arg_hash->{$_};} "SSL_key", "SSL_key_file"
2721 1971 325 0 defined $arg_hash->{$_} and $arg_hash->{$_} eq ""
2744 100 84 103 not $is_server and $verify_mode & 1
184 61 42 not $is_server and $verify_mode & 1 and !$vcn_scheme || $vcn_scheme ne 'none'
2785 100 0 0 $arg_hash->{'SSL_ticket_keycb'} and not $can_tckt_keycb
2803 287 0 0 $ver and $v ne $ver
2866 26 254 20 $ver eq "SSLv23" and not $ssl_op & $SSL_OP_NO{'SSLv3'}
2882 186 105 9 $arg_hash->{'SSL_server'} and my $id = $arg_hash->{'SSL_session_id_context'} || $arg_hash->{'SSL_verify_mode'} & 1 && "$ctx"
2972 117 0 0 ref $file eq "SCALAR" and not $$file
2974 117 0 0 ref $dir eq "SCALAR" and not $$dir
2984 34 83 0 $file || $dir and not &Net::SSLeay::CTX_load_verify_locations($ctx, scalar($file || ''), scalar($dir || ''))
2994 183 0 0 not &Net::SSLeay::CTX_load_verify_locations($ctx, scalar($ca{'SSL_ca_file'} || ''), scalar($dir || '')) and $verify_mode != $Net_SSLeay_VERIFY_NONE
3002 186 105 9 $is_server and $verify_mode & $Net_SSLeay_VERIFY_PEER
3072 1 0 1 not $cert and $arg_hash->{'SSL_passwd_cb'}
0 0 1 not $cert and $arg_hash->{'SSL_passwd_cb'} and defined(my $pw = $arg_hash->{'SSL_passwd_cb'}->(0))
3091 0 2 0 $key and not &Net::SSLeay::CTX_use_PrivateKey($ctx, $key)
3131 116 0 186 not $is_server and $can_pha
116 178 8 not $is_server and $can_pha and $havecert
178 0 8 not $is_server and $can_pha and $havecert and $havekey
3165 6 4 0 $arg_hash->{'SSL_server'} and $curve eq "auto"
3223 275 0 11 @accept_fp && do { my $fail; my $force = $arg_hash->{'SSL_force_fingerprint'}; sub { my($ok, $cert, $depth) = @_; $fail = 1 unless $ok; return 1 if $depth > 0; my %fp; foreach $_ (@accept_fp) { my $fp = ($fp{join $;, $_->[0], $_->[1]} ||= $_->[1] ? &Net::SSLeay::X509_pubkey_digest($cert, scalar &$algo2digest($_->[0])) : &Net::SSLeay::X509_digest($cert, scalar &$algo2digest($_->[0]))); next if $fp ne $_->[2]; return 1; } ; return $force ? 0 : !$fail; } }
3252 164 0 23 $error &&= &Net::SSLeay::ERR_error_string($error)
3258 183 0 103 ($verify_cb || @accept_fp) && sub { my($ok, $ctx_store) = @_; my($certname, $cert, $error, $depth); if ($ctx_store) { $cert = &Net::SSLeay::X509_STORE_CTX_get_current_cert($ctx_store); $error = &Net::SSLeay::X509_STORE_CTX_get_error($ctx_store); $depth = &Net::SSLeay::X509_STORE_CTX_get_error_depth($ctx_store); $certname = &Net::SSLeay::X509_NAME_oneline(scalar &Net::SSLeay::X509_get_issuer_name($cert)) . &Net::SSLeay::X509_NAME_oneline(scalar &Net::SSLeay::X509_get_subject_name($cert)); $error &&= &Net::SSLeay::ERR_error_string($error); } ; DEBUG("ok=$ok [$depth] $certname") if $IO::Socket::SSL::DEBUG >= 3; $ok = &$verify_cb($ok, $ctx_store, $certname, $error, $cert, $depth) if $verify_cb; $ok = &$verify_fingerprint($ok, $cert, $depth) if $verify_fingerprint and $cert; return $ok; }
3277 100 0 186 not $is_server and $can_ocsp_staple
100 11 175 not $is_server and $can_ocsp_staple and not $verify_fingerprint
3333 0 0 0 $status and $status->[2]
3358 0 0 0 @results and $chain[0] == $iossl->peer_certificate
3428 283 0 3 $self->{'session_cache'} and %sess_cb
3584 5 11 0 $v && $v->[0]
3739 0 0 0 $e->{'expire'} and time < $e->{'expire'}
3743 0 0 0 $e->{'nextUpdate'} and time < $e->{'nextUpdate'}
3914 0 0 0 @miss and @found
3968 0 0 0 $resp->{'success'} && $resp->{'content'}
4119 0 0 0 $ssl_ver and $content_type != $trace_constants{'SSL3_RT_HEADER'}
0 0 0 $ssl_ver and $content_type != $trace_constants{'SSL3_RT_HEADER'} and $content_type != $trace_constants{'SSL3_RT_INNER_CONTENT_TYPE'}
4132 0 0 0 $ssl_ver == $trace_constants{'SSL3_VERSION_MAJOR'} && $content_type

or 2 conditions

line l !l condition
155 89 0 eval { do { Net::SSLeay::MODE_AUTO_RETRY() } } || 4
361 89 0 eval { do { require Socket; 'Socket'->VERSION(1.95); die unless Socket::inet_pton(10, '::1') and 10; 'Socket'->import('inet_pton', 'NI_NUMERICHOST', 'NI_NUMERICSERV'); *_getnameinfo = sub { return unless my($err, $host, $port) = Socket::getnameinfo(@_); return if $err; return $host, $port; } ; 'Socket' } } || eval { do { require Socket6; die unless Socket6::inet_pton(10, '::1') and 10; 'Socket6'->import('inet_pton', 'NI_NUMERICHOST', 'NI_NUMERICSERV'); *_getnameinfo = sub { return Socket6::getnameinfo(@_); } ; 'Socket6' } } || undef
670 0 304 $arg_hash->{'Proto'} ||= "tcp"
673 20 196 $arg_hash->{'Listen'} || 0
705 41 45 $! ||= 11
714 97 0 shift() || (return _invalid_object())
741 0 197 $_[0] || {}
756 197 0 &Net::SSLeay::new($ctx->{'context'}) || (return $self->error('SSL structure creation failed'))
913 1 0 $! ||= 110
1012 67 0 shift() || (return _invalid_object())
1013 0 67 shift() || 'IO::Socket::SSL'
1019 67 0 $self->SUPER::accept($class) || (return)
1055 0 128 $_[0] || {}
1065 134 0 &Net::SSLeay::new(do { *$socket }->{'_SSL_ctx'}{'context'}) || (return $socket->error('SSL structure creation failed'))
1142 1 0 $! ||= 110
1211 7 14 $write || 0
1276 0 0 +($SSL_OBJECT{$_[5]} || (return))->[0] || (return)
1312 58 160 do { *$self }->{'_SSL_object'} || (last)
1332 10 2 do { *$self }->{'_SSL_bio_sub'} || 0
1355 25 6218 $offset ||= 0
1422 0 6 do { *$self }->{'_SSL_read_closed'} || 0
1442 2 6168 do { *$self }->{'_SSL_read_closed'} || 0
1459 1 93 do { *$self }->{'_SSL_read_closed'} || 0
1483 2 9615 $offset ||= 0
1504 2 0 $! ||= 32
1518 0 0 $! ||= 32
1529 0 64 do { *$self }->{'_SSL_write_closed'} || 0
1552 5 9554 do { *$self }->{'_SSL_write_closed'} || 0
1573 0 61 $, || ''
0 61 $\ || ''
1703 278 0 shift() || (return _invalid_object())
1728 335 0 shift() || (return _invalid_object())
1756 129 0 do { *$self }->{'_SSL_opened'} || 0
1781 0 0 $! ||= 32
1801 0 0 $! ||= 32
1849 350 304 $keys ||= \%all_my_keys
1923 1 0 do { *$self }->{'_SSL_object'} || (return)
1988 1 0 $ISA[0]->new_from_fd($fd, '+<') || (return $class->error('Could not create socket from file descriptor.'))
1999 1 0 (shift())->_get_ssl_object || (return)
2007 0 0 $self->_get_ssl_object || (return)
2067 6 0 $self->_get_ssl_object || (return)
2068 6 0 &Net::SSLeay::get_certificate($ssl) || (return)
2174 161 48 shift() || 'default'
2221 278 10 $wtyp ||= ""
2307 7 0 $algo || 'sha256'
14 0 $algo || 'sha256'
2314 19 2 $algo ||= "sha256"
2320 11 0 (shift())->_get_ssl_object || (return)
2325 34 0 (shift())->_get_ssl_object || (return)
2339 0 0 (shift())->_get_ssl_object || (return)
2344 3 0 (shift())->_get_ssl_object || (return)
2352 0 0 $self->_get_ssl_object || (return)
2368 0 0 $SSL_ERROR || ''
2395 0 1 Net::SSLeay::print_errs('SSL error: ') || ''
2562 2 0 $self->_get_ssl_object || (return)
2569 2 0 $self->_get_ssl_object || (return)
2702 0 34 undef $arg_hash->{'SSL_ca_path'} ||= undef
2704 0 0 $arg_hash->{'SSL_ca_file'} ||= undef
2705 0 69 $arg_hash->{'SSL_ca_path'} ||= undef
2730 106 181 $arg_hash->{'SSL_verify_mode'} || 0
2733 28 184 $arg_hash->{$_} || (next)
2984 83 0 $file || ''
0 83 $dir || ''
2994 183 0 $ca{'SSL_ca_file'} || ''
161 22 $dir || ''
3138 0 0 &Net::SSLeay::BIO_new_file($f, 'r') || (return 'IO::Socket::SSL'->error("Failed to open DH file $f"))
3189 0 0 &Net::SSLeay::OBJ_txt2nid($curve) || (return 'IO::Socket::SSL'->error("cannot find NID for curve name '${curve}'"))
3220 1 12 $pubkey || ''
3372 0 0 $cl->{$_} || $cl->{''} || $DEFAULT_SSL_ARGS{'SSL_cipher_list'} || (next)
3382 0 0 $cl->{$_} || $cl->{''} || $DEFAULT_SSL_ARGS{'SSL_cipher_list'} || (next)
3550 0 0 ~~@del || 'none'
3731 0 0 $size || 100
3805 0 0 $hard_error ||= ""
4143 0 0 eval { do { &Net::SSLeay::alert_desc_string_long($msg_type) } } || 'Unknown alert'

or 3 conditions

line l !l&&r !l&&!r condition
439 0 267 0 UNIVERSAL::can('Net::SSLeay', $name) || sub { $value; }
505 0 54 0 $openssldir ||= &Net::SSLeay::SSLeay_version(5) =~ /^OPENSSLDIR: "(.+)"$/ ? $1 : (&Net::SSLeay::SSLeay_version(4) =~ /^OPENSSLDIR: "(.+)"$/ ? $1 : "cannot-determine-openssldir-from-ssleay-version")
512 0 54 0 $ENV{'SSL_CERT_DIR'} || ($^O =~ /vms/i ? 'SSLCERTS:' : "$openssldir/certs")
524 0 54 0 $ENV{'SSL_CERT_FILE'} || ($^O =~ /vms/i ? 'SSLCERTS:cert.pem' : "$openssldir/cert.pem")
558 0 0 0 UNIVERSAL::isa($class, "IO::Socket::INET6") or UNIVERSAL::isa($class, "IO::Socket::IP")
652 72 0 68 $arg_hash->{'Domain'} || $arg_hash->{'Family'}
0 72 68 $arg_hash->{$family_key} ||= $arg_hash->{'Domain'} || $arg_hash->{'Family'}
762 6 6 0 $arg_hash->{'SSL_session_key'} ||= do { my $host = $arg_hash->{'PeerAddr'} || $arg_hash->{'PeerHost'} || $self->_update_peer; my $port = $arg_hash->{'PeerPort'} || $arg_hash->{'PeerService'}; $port ? "${host}:$port" : $host }
764 5 1 0 $arg_hash->{'PeerAddr'} || $arg_hash->{'PeerHost'} || $self->_update_peer
765 1 5 0 $arg_hash->{'PeerPort'} || $arg_hash->{'PeerService'}
781 0 0 197 $DEBUG >= 2 or do { *$self }->{'_SSL_msg_callback'}
785 2 83 95 $arg_hash->{'PeerAddr'} || $arg_hash->{'PeerHost'}
793 85 0 0 not $host =~ /[a-z_]/i or $host =~ /:/
810 2 98 97 $arg_hash->{'PeerAddr'} or $arg_hash->{'PeerHost'}
814 42 8 64 $arg_hash->{'SSL_verifycn_name'} || $arg_hash->{'SSL_hostname'}
816 23 41 0 $arg_hash->{'PeerAddr'} || $arg_hash->{'PeerHost'}
849 197 2 0 $ssl ||= do { *$self }->{'_SSL_object'}
945 160 2 0 $ctx ||= do { *$self }->{'_SSL_ctx'}
1041 0 0 67 $biosock || $args->{'SSL_usebio'}
1080 0 0 134 $DEBUG >= 2 or do { *$self }->{'_SSL_msg_callback'}
1083 134 3 0 $ssl ||= do { *$socket }->{'_SSL_object'}
1199 0 21 61 $wbuf ne "" or &Net::SSLeay::BIO_pending($wbio) > 0
1202 0 0 21 not defined $buf or $buf eq ""
1214 0 0 0 $!{'EAGAIN'} or $!{'EWOULDBLOCK'}
1250 0 0 0 $!{'EAGAIN'} or $!{'EWOULDBLOCK'}
1303 0 0 0 $DEBUG >= 2 || do { *$self }->{'_SSL_msg_callback'}
1342 8 0 0 $err == $Net_SSLeay_ERROR_SSL || $err == $Net_SSLeay_ERROR_SYSCALL
1361 6221 8 14 $length or $justpeek
1397 0 0 2 do { *$self }->{'_SSL_bio_socket'} || (do { *$self }->{'_SSL_rawfd'} ||= do { open my $fh, '+<&=', $self; $fh })
1412 1 2 0 $biosock || $self
1469 0 5 0 $fd ||= $self
1482 9553 64 0 $length ||= $buf_len
1591 2 5 85 not defined $/ or wantarray
1599 0 0 0 $! == 11 or $! == 11
1629 0 0 0 $! == 11 or $! == 11
1650 18 8 62 not defined $poke or $poke eq ""
1694 58 1 0 $delim1 eq '' || $eod < length $buf
1715 2 65 0 $biosock || $self
1749 17 49 14 $status & 2 || $stop_args->{'SSL_fast_shutdown'}
1820 6 253 0 do { *$self }->{'_SSL_bio_socket'} || $self
1833 0 31 17 $downgrade or not defined $downgrade
1904 242 0 0 do { *$self }->{'_SSL_object'} || 'IO::Socket::SSL'->_internal_error('Undefined SSL object', 9)
1940 6 157 1 $usebio or defined $original_fileno
1960 159 0 4 not defined $start_handshake or $start_handshake
2052 42 35 2 do { *$self }->{'_SSL_certificate'} ||= &Net::SSLeay::get_peer_certificate($ssl)
2178 209 0 0 $scheme{$scheme} || croak("scheme $scheme not defined")
2203 0 3 52 4 != @ip or 4 != grep({$_ < 256 if defined $_;} @ip)
2269 16 87 14 $scheme->{'check_cn'} eq "always" or $scheme->{'check_cn'} eq "when_only" and not $alt_dnsNames
2298 0 8 0 do { *$self }->{'_SSL_servername'} ||= do { return unless my $ssl = $self->_get_ssl_object; &Net::SSLeay::get_servername($ssl) }
2306 2 19 0 $cert ||= $self->peer_certificate
2359 0 0 0 $ctx->{'ocsp_cache'} ||= "IO::Socket::SSL::OCSP_Cache"->new
2376 34 0 16 do { *$self }->{'_SSL_ioclass_upgraded'} or do { *$self }->{'_SSL_arguments'}{'SSL_keepSocketOnError'}
2416 66 5 30 not $oe or $oe->[1] <= $severity
2475 211 0 0 not $use_threads or delete $CREATED_IN_THIS_THREAD{$ssl}
2691 100 2 185 $is_server || defined $arg_hash->{'SSL_use_cert'}
2702 0 0 34 $arg_hash->{'SSL_ca_file'} ||= (undef $arg_hash->{'SSL_ca_path'} ||= undef)
2713 3264 1779 0 defined $arg_hash->{$_} or delete $arg_hash->{$_}
2744 61 42 0 !$vcn_scheme || $vcn_scheme ne 'none'
2759 90 0 0 $verify_name || ref $vcn_scheme && $vcn_scheme->{'callback'} && 'unknown'
2799 741 525 0 $2 || $3
2882 0 9 105 $arg_hash->{'SSL_session_id_context'} || $arg_hash->{'SSL_verify_mode'} & 1 && "$ctx"
2935 0 0 0 $psk->{$identity} || $psk->{''} || 'IO::Socket::SSL'->_internal_error("no PSK for given identity '${identity}' and no default")
2968 34 83 183 $arg_hash->{'SSL_ca'} or defined $arg_hash->{'SSL_ca_file'}
117 0 183 $arg_hash->{'SSL_ca'} or defined $arg_hash->{'SSL_ca_file'} or defined $arg_hash->{'SSL_ca_path'}
2984 83 0 34 $file || $dir
3112 181 2 119 not $havecert or $havekey
90 1 0 $arg_hash->{'SSL_key_file'} || ($havecert eq 'PEM' ? $arg_hash->{'SSL_cert_file'} : undef)
3213 13 0 0 $algo ||= length $digest == 32 ? "md5" : (length $digest == 40 ? "sha1" : (length $digest == 64 ? "sha256" : (return "IO::Socket::SSL"->_internal_error("cannot detect hash algorithm from fingerprint '${_}'", 9))))
3233 1 14 0 $fp{join $;, $_->[0], $_->[1]} ||= $_->[1] ? &Net::SSLeay::X509_pubkey_digest($cert, scalar &$algo2digest($_->[0])) : &Net::SSLeay::X509_digest($cert, scalar &$algo2digest($_->[0]))
3388 286 0 0 $ctx{''} || (values %ctx)[0]
3389 6 0 280 keys %ctx > 1 or not exists $ctx{''}
3397 13 6 0 $ctx{lc $host} || $ctx{''}
3434 15 0 0 $SSL_OBJECT{$ssl} || do { warn "callback session new: no known SSL object for $ssl"; return }
3468 284 0 0 not $use_threads or delete $CTX_CREATED_IN_THIS_THREAD{$ctx}
3831 0 0 0 not $todo or $self->{'error'}
4113 0 0 0 $tc_ver2s{$ssl_ver} || "(version=$ssl_ver)"
4132 0 0 0 $tc_type2s{$content_type} || "TLS Unknown (type=$content_type)"
4146 0 0 0 $tc_msgtype2s{join $;, $ssl_ver, $msg_type} || "Unknown (ssl_ver=$ssl_ver, msg=$msg_type)"