mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2024-11-13 21:56:11 +00:00
158a736360
Fix playback issues that was causing Kodi to hang up
58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
"""Collection of exceptions raised and/or processed by Cheroot."""
|
|
|
|
from __future__ import absolute_import, division, print_function
|
|
__metaclass__ = type
|
|
|
|
import errno
|
|
import sys
|
|
|
|
|
|
class MaxSizeExceeded(Exception):
|
|
"""Exception raised when a client sends more data then acceptable within limit.
|
|
|
|
Depends on ``request.body.maxbytes`` config option if used within CherryPy
|
|
"""
|
|
|
|
|
|
class NoSSLError(Exception):
|
|
"""Exception raised when a client speaks HTTP to an HTTPS socket."""
|
|
|
|
|
|
class FatalSSLAlert(Exception):
|
|
"""Exception raised when the SSL implementation signals a fatal alert."""
|
|
|
|
|
|
def plat_specific_errors(*errnames):
|
|
"""Return error numbers for all errors in errnames on this platform.
|
|
|
|
The 'errno' module contains different global constants depending on
|
|
the specific platform (OS). This function will return the list of
|
|
numeric values for a given list of potential names.
|
|
"""
|
|
errno_names = dir(errno)
|
|
nums = [getattr(errno, k) for k in errnames if k in errno_names]
|
|
# de-dupe the list
|
|
return list(dict.fromkeys(nums).keys())
|
|
|
|
|
|
socket_error_eintr = plat_specific_errors('EINTR', 'WSAEINTR')
|
|
|
|
socket_errors_to_ignore = plat_specific_errors(
|
|
'EPIPE',
|
|
'EBADF', 'WSAEBADF',
|
|
'ENOTSOCK', 'WSAENOTSOCK',
|
|
'ETIMEDOUT', 'WSAETIMEDOUT',
|
|
'ECONNREFUSED', 'WSAECONNREFUSED',
|
|
'ECONNRESET', 'WSAECONNRESET',
|
|
'ECONNABORTED', 'WSAECONNABORTED',
|
|
'ENETRESET', 'WSAENETRESET',
|
|
'EHOSTDOWN', 'EHOSTUNREACH',
|
|
)
|
|
socket_errors_to_ignore.append('timed out')
|
|
socket_errors_to_ignore.append('The read operation timed out')
|
|
socket_errors_nonblocking = plat_specific_errors(
|
|
'EAGAIN', 'EWOULDBLOCK', 'WSAEWOULDBLOCK')
|
|
|
|
if sys.platform == 'darwin':
|
|
socket_errors_to_ignore.extend(plat_specific_errors('EPROTOTYPE'))
|
|
socket_errors_nonblocking.extend(plat_specific_errors('EPROTOTYPE'))
|