52 lines
1.1 KiB
Python
52 lines
1.1 KiB
Python
# -*- test-case-name: twisted.protocols.haproxy.test -*-
|
|
# Copyright (c) Twisted Matrix Laboratories.
|
|
# See LICENSE for details.
|
|
|
|
"""
|
|
HAProxy specific exceptions.
|
|
"""
|
|
|
|
import contextlib
|
|
import sys
|
|
|
|
from twisted.python import compat
|
|
|
|
|
|
class InvalidProxyHeader(Exception):
|
|
"""
|
|
The provided PROXY protocol header is invalid.
|
|
"""
|
|
|
|
|
|
|
|
class InvalidNetworkProtocol(InvalidProxyHeader):
|
|
"""
|
|
The network protocol was not one of TCP4 TCP6 or UNKNOWN.
|
|
"""
|
|
|
|
|
|
|
|
class MissingAddressData(InvalidProxyHeader):
|
|
"""
|
|
The address data is missing or incomplete.
|
|
"""
|
|
|
|
|
|
|
|
@contextlib.contextmanager
|
|
def convertError(sourceType, targetType):
|
|
"""
|
|
Convert an error into a different error type.
|
|
|
|
@param sourceType: The type of exception that should be caught and
|
|
converted.
|
|
@type sourceType: L{Exception}
|
|
|
|
@param targetType: The type of exception to which the original should be
|
|
converted.
|
|
@type targetType: L{Exception}
|
|
"""
|
|
try:
|
|
yield None
|
|
except sourceType:
|
|
compat.reraise(targetType(), sys.exc_info()[-1])
|