diff options
author | Eric Wong <e@80x24.org> | 2019-06-30 04:27:55 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2019-06-30 22:33:17 +0000 |
commit | 5769d488526b88a394b4b6741e77dd0e7441d248 (patch) | |
tree | 0c3df04121a6d5876976a672a37d7acb74415378 /t/nntpd-tls.t | |
parent | 38ba41513ee4c42414fbfadb6e6d2bf281fbedfd (diff) | |
download | public-inbox-5769d488526b88a394b4b6741e77dd0e7441d248.tar.gz |
Some clients may rely on this for STARTTLS support.
Diffstat (limited to 't/nntpd-tls.t')
-rw-r--r-- | t/nntpd-tls.t | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/t/nntpd-tls.t b/t/nntpd-tls.t index 82b63f3e..4cf53daa 100644 --- a/t/nntpd-tls.t +++ b/t/nntpd-tls.t @@ -128,6 +128,8 @@ for my $args ( my $c = Net::NNTP->new($nntps_addr, %o, SSL => 1); my $list = $c->list; is_deeply($list, $expect, 'NNTPS LIST works'); + unlike(get_capa($c), qr/\bSTARTTLS\r\n/, + 'STARTTLS not advertised for NNTPS'); is($c->command('QUIT')->response(), Net::Cmd::CMD_OK(), 'QUIT works'); is(0, sysread($c, my $buf, 1), 'got EOF after QUIT'); @@ -139,6 +141,8 @@ for my $args ( is($c->code, 382, 'got 382 for STARTTLS'); $list = $c->list; is_deeply($list, $expect, 'LIST works after STARTTLS'); + unlike(get_capa($c), qr/\bSTARTTLS\r\n/, + 'STARTTLS not advertised after STARTTLS'); # Net::NNTP won't let us do dumb things, but we need to test # dumb things, so use Net::Cmd directly: @@ -149,6 +153,7 @@ for my $args ( # STARTTLS with bad hostname $o{SSL_hostname} = $o{SSL_verifycn_name} = 'server.invalid'; $c = Net::NNTP->new($starttls_addr, %o); + like(get_capa($c), qr/\bSTARTTLS\r\n/, 'STARTTLS advertised'); $list = $c->list; is_deeply($list, $expect, 'plain LIST works again'); ok(!$c->starttls, 'STARTTLS fails with bad hostname'); @@ -217,4 +222,17 @@ for my $args ( } } done_testing(); + +sub get_capa { + my ($sock) = @_; + syswrite($sock, "CAPABILITIES\r\n"); + my $capa = ''; + do { + my $r = sysread($sock, $capa, 8192, length($capa)); + die "unexpected: $!" unless defined($r); + die 'unexpected EOF' if $r == 0; + } until $capa =~ /\.\r\n\z/; + $capa; +} + 1; |