add more to cargo toml and fix openssl
This commit is contained in:
@@ -1,9 +1,26 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "tonic"
|
name = "tonic"
|
||||||
|
# When releasing to crates.io:
|
||||||
|
# - Remove path dependencies
|
||||||
|
# - Update html_root_url.
|
||||||
|
# - Update doc url
|
||||||
|
# - Cargo.toml
|
||||||
|
# - README.md
|
||||||
|
# - Update CHANGELOG.md.
|
||||||
|
# - Create "v0.1.x" git tag.
|
||||||
version = "0.1.0-alpha.1"
|
version = "0.1.0-alpha.1"
|
||||||
authors = ["Lucio Franco <[email protected]>"]
|
authors = ["Lucio Franco <[email protected]>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
documentation = "https://docs.rs/tonic/0.1.0-alpha.1/tonic/"
|
||||||
|
repository = "https://github.com/hyperium/tonic"
|
||||||
|
homepage = "https://tokio.rs"
|
||||||
|
description = """
|
||||||
|
A gRPC over HTTP/2 implementation focused on high performance, interoperability, and flexibility.
|
||||||
|
"""
|
||||||
|
readme = "README.md"
|
||||||
|
categories = ["web-programming", "network-programming", "asynchronous"]
|
||||||
|
keywords = ["rpc", "grpc", "async", "futures", "protobuf"]
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["transport", "codegen", "prost"]
|
default = ["transport", "codegen", "prost"]
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use crate::transport::{Certificate, Identity};
|
|||||||
#[cfg(feature = "openssl")]
|
#[cfg(feature = "openssl")]
|
||||||
use openssl1::{
|
use openssl1::{
|
||||||
pkey::PKey,
|
pkey::PKey,
|
||||||
ssl::{SslAcceptor, SslConnector, SslMethod},
|
ssl::{SslAcceptor, SslConnector, SslMethod, select_next_proto, AlpnError},
|
||||||
x509::X509,
|
x509::X509,
|
||||||
};
|
};
|
||||||
use std::{fmt, sync::Arc};
|
use std::{fmt, sync::Arc};
|
||||||
@@ -14,7 +14,6 @@ use tokio_rustls::{
|
|||||||
webpki::DNSNameRef,
|
webpki::DNSNameRef,
|
||||||
TlsAcceptor as RustlsAcceptor, TlsConnector as RustlsConnector,
|
TlsAcceptor as RustlsAcceptor, TlsConnector as RustlsConnector,
|
||||||
};
|
};
|
||||||
#[allow(unused_import)]
|
|
||||||
use tracing::trace;
|
use tracing::trace;
|
||||||
|
|
||||||
/// h2 alpn in wire format for openssl.
|
/// h2 alpn in wire format for openssl.
|
||||||
@@ -95,11 +94,10 @@ impl TlsConnector {
|
|||||||
let config = connector.configure()?;
|
let config = connector.configure()?;
|
||||||
let tls = tokio_openssl::connect(config, &self.domain, io).await?;
|
let tls = tokio_openssl::connect(config, &self.domain, io).await?;
|
||||||
|
|
||||||
// FIXME: alpn returned from interop server is not working
|
match tls.ssl().selected_alpn_protocol() {
|
||||||
// match tls.ssl().selected_alpn_protocol() {
|
Some(b) if b == b"h2" => trace!("HTTP/2 succesfully negotiated."),
|
||||||
// Some(b) if b == b"h2" => trace!("HTTP/2 succesfully negotiated."),
|
_ => return Err(TlsError::H2NotNegotiated.into()),
|
||||||
// _ => return Err(TlsError::H2NotNegotiated.into()),
|
};
|
||||||
// };
|
|
||||||
|
|
||||||
BoxedIo::new(tls)
|
BoxedIo::new(tls)
|
||||||
}
|
}
|
||||||
@@ -171,9 +169,12 @@ impl TlsAcceptor {
|
|||||||
|
|
||||||
let mut config = SslAcceptor::mozilla_modern(SslMethod::tls())?;
|
let mut config = SslAcceptor::mozilla_modern(SslMethod::tls())?;
|
||||||
|
|
||||||
config.set_alpn_protos(ALPN_H2_WIRE)?;
|
|
||||||
config.set_private_key(&key)?;
|
config.set_private_key(&key)?;
|
||||||
config.set_certificate(&cert)?;
|
config.set_certificate(&cert)?;
|
||||||
|
config.set_alpn_protos(ALPN_H2_WIRE)?;
|
||||||
|
config.set_alpn_select_callback(|_ssl, alpn| {
|
||||||
|
select_next_proto(ALPN_H2_WIRE, alpn).ok_or(AlpnError::NOACK)
|
||||||
|
});
|
||||||
|
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
inner: Acceptor::Openssl(config.build()),
|
inner: Acceptor::Openssl(config.build()),
|
||||||
@@ -207,11 +208,6 @@ impl TlsAcceptor {
|
|||||||
#[cfg(feature = "openssl")]
|
#[cfg(feature = "openssl")]
|
||||||
Acceptor::Openssl(acceptor) => {
|
Acceptor::Openssl(acceptor) => {
|
||||||
let tls = tokio_openssl::accept(&acceptor, io).await?;
|
let tls = tokio_openssl::accept(&acceptor, io).await?;
|
||||||
|
|
||||||
// let ssl = tls.ssl();
|
|
||||||
|
|
||||||
// ssl.set_alpn_protos(ALPN_H2_WIRE);
|
|
||||||
|
|
||||||
BoxedIo::new(tls)
|
BoxedIo::new(tls)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,7 +215,6 @@ impl TlsAcceptor {
|
|||||||
Acceptor::Rustls(config) => {
|
Acceptor::Rustls(config) => {
|
||||||
let acceptor = RustlsAcceptor::from(config.clone());
|
let acceptor = RustlsAcceptor::from(config.clone());
|
||||||
let tls = acceptor.accept(io).await?;
|
let tls = acceptor.accept(io).await?;
|
||||||
|
|
||||||
BoxedIo::new(tls)
|
BoxedIo::new(tls)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user