Skip to main content

HttpsProxy

Struct HttpsProxy 

Source
pub struct HttpsProxy { /* private fields */ }

Implementations§

Source§

impl HttpsProxy

Source

pub fn new( registry: Registry, sessions: Rc<RefCell<SessionManager>>, pool: Rc<RefCell<Pool>>, backends: Rc<RefCell<BackendMap>>, ) -> HttpsProxy

Source

pub fn add_listener( &mut self, config: HttpsListenerConfig, token: Token, ) -> Result<Token, ProxyError>

Source

pub fn remove_listener( &mut self, remove: RemoveListener, ) -> Result<Option<ResponseContent>, ProxyError>

Source

pub fn soft_stop(&mut self) -> Result<(), ProxyError>

Source

pub fn hard_stop(&mut self) -> Result<(), ProxyError>

Source

pub fn query_all_certificates( &mut self, ) -> Result<Option<ResponseContent>, ProxyError>

Source

pub fn query_certificate_for_domain( &mut self, domain: String, ) -> Result<Option<ResponseContent>, ProxyError>

Source

pub fn inherited_socket_fate(&self, addr: &ListenerKey) -> InheritedSocketFate

What this proxy would do with a socket handed to activate_listener for addr. See crate::InheritedSocketFate.

The event loop is single-threaded, so nothing can change the listener’s active flag between this answer and the activate_listener call that acts on it.

Source

pub fn activate_listener( &mut self, addr: &ListenerKey, tcp_listener: Option<MioTcpListener>, ) -> Result<Token, ProxyError>

Source

pub fn listener_token(&self, address: &ListenerKey) -> Option<Token>

The slab token reserved for the listener at address, if this proxy holds one.

A listener owns exactly one slab slot for its whole AddListener -> RemoveListener lifetime, and no remove_listener implementation touches the session slab. Server therefore reads the token here BEFORE dropping the listener, so that reserved slot is released exactly once, at the end of the lifetime.

Source

pub fn give_back_listeners(&mut self) -> Vec<(ListenerKey, MioTcpListener)>

Source

pub fn give_back_listener( &mut self, address: &ListenerKey, ) -> Result<(Token, MioTcpListener), ProxyError>

Source

pub fn update_listener( &mut self, patch: UpdateHttpsListenerConfig, ) -> Result<(), ProxyError>

Apply a partial-update patch to the identified HTTPS listener.

Source

pub fn add_cluster( &mut self, cluster: Cluster, ) -> Result<Option<ResponseContent>, ProxyError>

Source

pub fn remove_cluster( &mut self, cluster_id: &str, ) -> Result<Option<ResponseContent>, ProxyError>

Source

pub fn add_https_frontend( &mut self, front: RequestHttpFrontend, ) -> Result<Option<ResponseContent>, ProxyError>

Source

pub fn remove_https_frontend( &mut self, front: RequestHttpFrontend, ) -> Result<Option<ResponseContent>, ProxyError>

Source

pub fn add_certificate( &mut self, add_certificate: AddCertificate, ) -> Result<Option<ResponseContent>, ProxyError>

Source

pub fn remove_certificate( &mut self, remove_certificate: RemoveCertificate, ) -> Result<Option<ResponseContent>, ProxyError>

Source

pub fn replace_certificate( &mut self, replace_certificate: ReplaceCertificate, ) -> Result<Option<ResponseContent>, ProxyError>

Trait Implementations§

Source§

impl L7Proxy for HttpsProxy

Source§

fn kind(&self) -> ListenerType

Source§

fn register_socket( &self, socket: &mut MioTcpStream, token: Token, interest: Interest, ) -> Result<(), Error>

Source§

fn add_session(&self, session: Rc<RefCell<dyn ProxySession>>) -> Token

Source§

fn remove_session(&self, token: Token) -> bool

Remove the session from the session manager slab. Returns true if the session was actually there before deletion
Source§

fn clusters(&self) -> &HashMap<ClusterId, Cluster>

Source§

fn sessions(&self) -> Rc<RefCell<SessionManager>>

Access the worker’s crate::server::SessionManager for per-(cluster, source-IP) connection-limit accounting. The mux uses this to track / untrack stream-granular (cluster_id, ip) entries and consult the cluster_ip_at_limit gate before each backend connect.
Source§

impl ProxyConfiguration for HttpsProxy

Source§

fn accept( &mut self, token: ListenToken, ) -> Result<(MioTcpStream, StdSocketAddr), AcceptError>

Accept one connection on the listener behind token, returning the socket together with the peer address accept(2) reported for it.
Source§

fn create_session( &mut self, frontend_sock: MioTcpStream, peer: StdSocketAddr, token: ListenToken, wait_time: Duration, proxy: Rc<RefCell<Self>>, ) -> Result<(), AcceptError>

Build the session for a socket Self::accept returned. peer is the address accept(2) returned with it, so the session never has to ask the kernel again with getpeername(2).
Source§

fn notify(&mut self, request: WorkerRequest) -> WorkerResponse

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.