refactor: AcceptableProtocolsContextFactory

- rename H2WrappedContextFactory to AcceptableProtocolsContextFactory
- AcceptableProtocolsContextFactory accepts an argument
acceptable_protocols which can be used to override the context factory
priority list of protocols during ALPN or NPN
This commit is contained in:
Aditya 2020-07-29 17:25:59 +05:30
parent e8342996f6
commit 19f2b4b53d
3 changed files with 7 additions and 6 deletions

View File

@ -3,8 +3,8 @@ from time import time
from typing import Optional, Tuple
from urllib.parse import urldefrag
from twisted.internet.defer import Deferred
from twisted.internet.base import ReactorBase
from twisted.internet.defer import Deferred
from twisted.internet.error import TimeoutError
from twisted.web.client import URI

View File

@ -97,14 +97,15 @@ class H2ConnectionPool:
@implementer(IPolicyForHTTPS)
class H2WrappedContextFactory:
def __init__(self, context_factory) -> None:
class AcceptableProtocolsContextFactory:
def __init__(self, context_factory, acceptable_protocols: List[bytes]) -> None:
verifyObject(IPolicyForHTTPS, context_factory)
self._wrapped_context_factory = context_factory
self._acceptable_protocols = acceptable_protocols
def creatorForNetloc(self, hostname, port) -> ClientTLSOptions:
options = self._wrapped_context_factory.creatorForNetloc(hostname, port)
_setAcceptableProtocols(options._ctx, [b'h2'])
_setAcceptableProtocols(options._ctx, self._acceptable_protocols)
return options
@ -116,7 +117,7 @@ class H2Agent:
) -> None:
self._reactor = reactor
self._pool = pool
self._context_factory = H2WrappedContextFactory(context_factory)
self._context_factory = AcceptableProtocolsContextFactory(context_factory, acceptable_protocols=[b'h2'])
self._endpoint_factory = _StandardEndpointFactory(
self._reactor, self._context_factory,
connect_timeout, bind_address

View File

@ -85,7 +85,7 @@ class Stream:
request: Request,
protocol: "H2ClientProtocol",
download_maxsize: int = 0,
download_warnsize: int = 0
download_warnsize: int = 0,
) -> None:
"""
Arguments: