File Coverage

blib/lib/AnyEvent/TLS/SNI.pm
Criterion Covered Total %
statement 24 35 68.5
branch 0 8 0.0
condition n/a
subroutine 8 10 80.0
pod n/a
total 32 53 60.3


line stmt bran cond sub pod time code
1             package AnyEvent::TLS::SNI;
2             # ABSTRACT: Adds Server Name Indication (SNI) support to AnyEvent::TLS client.
3             $AnyEvent::TLS::SNI::VERSION = '0.02';
4              
5 1     1   811 use strict;
  1         4  
  1         34  
6 1     1   7 use warnings;
  1         3  
  1         44  
7 1     1   6 no warnings 'redefine';
  1         6  
  1         42  
8 1     1   6 no strict 'refs';
  1         2  
  1         34  
9 1     1   644 use AnyEvent::Socket;
  1         18573  
  1         182  
10 1     1   881 use AnyEvent::TLS;
  1         4384  
  1         54  
11 1     1   10 use Net::SSLeay;
  1         3  
  1         57  
12 1     1   9 use Carp qw( croak );
  1         3  
  1         293  
13              
14             {
15             my $old_ref = \&{ 'AnyEvent::TLS::new' };
16             *{ 'AnyEvent::TLS::new' } = sub {
17 0     0     my ( $class, %param ) = @_;
18              
19 0           my $self = $old_ref->( $class, %param );
20              
21             $self->{host_name} = $param{host_name}
22 0 0         if exists $param{host_name};
23              
24 0           $self;
25             };
26             }
27              
28             {
29             my $old_ref = \&{ 'AnyEvent::TLS::_get_session' };
30             *{ 'AnyEvent::TLS::_get_session' } = sub($$;$$) {
31 0     0     my ($self, $mode, $ref, $cn) = @_;
32              
33 0           my $session = $old_ref->( @_ );
34              
35 0 0         if ( $mode eq 'connect' ) {
36 0 0         if ( $self->{host_name} ) {
37 0 0         croak 'Client side SNI not supported for this openssl'
38             if Net::SSLeay::OPENSSL_VERSION_NUMBER() < 0x01000000;
39 0           Net::SSLeay::set_tlsext_host_name( $session, $self->{host_name} );
40             }
41             }
42              
43 0           $session;
44             };
45             }
46              
47             1;
48              
49             __END__