[Fixed] call only once send_close_notify

This commit is contained in:
quininer 2017-08-15 22:00:20 +08:00
parent 037f84ea98
commit aefc023dd4
3 changed files with 18 additions and 4 deletions

View File

@ -1,6 +1,6 @@
[package]
name = "tokio-rustls"
version = "0.3.0"
version = "0.3.1"
authors = ["quininer kel <quininer@live.com>"]
license = "MIT/Apache-2.0"
repository = "https://github.com/quininer/tokio-rustls"
@ -10,6 +10,10 @@ readme = "README.md"
description = "Asynchronous TLS/SSL streams for Tokio using Rustls."
categories = ["asynchronous", "cryptography", "network-programming"]
[badges]
travis-ci = { repository = "quininer/tokio-rustls" }
appveyor = { repository = "quininer/tokio-rustls" }
[features]
danger = [ "rustls/dangerous_configuration" ]
@ -22,7 +26,7 @@ tokio-proto = { version = "0.1", optional = true }
[dev-dependencies]
tokio-core = "0.1"
clap = "2.20"
webpki-roots = "0.11.0"
webpki-roots = "0.12"
[target.'cfg(unix)'.dev-dependencies]
tokio-file-unix = "0.4"

View File

@ -1,5 +1,10 @@
# tokio-rustls
[![crates](https://img.shields.io/crates/v/tokio-rustls.svg)](https://crates.io/crates/tokio-rustls) [![license](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/quininer/tokio-rustls/blob/master/LICENSE-MIT) [![license](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/quininer/tokio-rustls/blob/master/LICENSE-APACHE) [![docs.rs](https://docs.rs/tokio-rustls/badge.svg)](https://docs.rs/tokio-rustls/)
[![travis-ci](https://travis-ci.org/quininer/tokio-rustls.svg?branch=master)](https://travis-ci.org/quininer/tokio-rustls)
[![appveyor](https://ci.appveyor.com/api/projects/status/4ukw15enii50suqi?svg=true)](https://ci.appveyor.com/project/quininer/tokio-rustls)
[![crates](https://img.shields.io/crates/v/tokio-rustls.svg)](https://crates.io/crates/tokio-rustls)
[![license](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/quininer/tokio-rustls/blob/master/LICENSE-MIT)
[![license](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/quininer/tokio-rustls/blob/master/LICENSE-APACHE)
[![docs.rs](https://docs.rs/tokio-rustls/badge.svg)](https://docs.rs/tokio-rustls/)
Asynchronous TLS/SSL streams for [Tokio](https://tokio.rs/) using
[Rustls](https://github.com/ctz/rustls).

View File

@ -165,6 +165,7 @@ impl<S, C> Future for MidHandshake<S, C>
/// protocol.
#[derive(Debug)]
pub struct TlsStream<S, C> {
is_shutdown: bool,
eof: bool,
io: S,
session: C
@ -186,6 +187,7 @@ impl<S, C> TlsStream<S, C>
#[inline]
pub fn new(io: S, session: C) -> TlsStream<S, C> {
TlsStream {
is_shutdown: false,
eof: false,
io: io,
session: session
@ -310,7 +312,10 @@ impl<S, C> AsyncWrite for TlsStream<S, C>
C: Session
{
fn shutdown(&mut self) -> Poll<(), io::Error> {
self.session.send_close_notify();
if !self.is_shutdown {
self.session.send_close_notify();
self.is_shutdown = true;
}
while self.session.wants_write() {
try_nb!(self.session.write_tls(&mut self.io));
}