mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
- Issue #22841: Reject coroutines in asyncio add_signal_handler().
Patch by Ludovic.Gasc.
This commit is contained in:
parent
6c14f23100
commit
e36fcde383
3 changed files with 18 additions and 0 deletions
|
@ -13,6 +13,7 @@ import threading
|
||||||
from . import base_events
|
from . import base_events
|
||||||
from . import base_subprocess
|
from . import base_subprocess
|
||||||
from . import constants
|
from . import constants
|
||||||
|
from . import coroutines
|
||||||
from . import events
|
from . import events
|
||||||
from . import selector_events
|
from . import selector_events
|
||||||
from . import selectors
|
from . import selectors
|
||||||
|
@ -66,6 +67,8 @@ class _UnixSelectorEventLoop(selector_events.BaseSelectorEventLoop):
|
||||||
Raise ValueError if the signal number is invalid or uncatchable.
|
Raise ValueError if the signal number is invalid or uncatchable.
|
||||||
Raise RuntimeError if there is a problem setting up the handler.
|
Raise RuntimeError if there is a problem setting up the handler.
|
||||||
"""
|
"""
|
||||||
|
if coroutines.iscoroutinefunction(callback):
|
||||||
|
raise TypeError("coroutines cannot be used with call_soon()")
|
||||||
self._check_signal(sig)
|
self._check_signal(sig)
|
||||||
try:
|
try:
|
||||||
# set_wakeup_fd() raises ValueError if this is not the
|
# set_wakeup_fd() raises ValueError if this is not the
|
||||||
|
|
|
@ -63,6 +63,18 @@ class SelectorEventLoopSignalTests(test_utils.TestCase):
|
||||||
self.loop.add_signal_handler,
|
self.loop.add_signal_handler,
|
||||||
signal.SIGINT, lambda: True)
|
signal.SIGINT, lambda: True)
|
||||||
|
|
||||||
|
@mock.patch('asyncio.unix_events.signal')
|
||||||
|
def test_add_signal_handler_coroutine_error(self, m_signal):
|
||||||
|
|
||||||
|
@asyncio.coroutine
|
||||||
|
def simple_coroutine():
|
||||||
|
yield from []
|
||||||
|
|
||||||
|
self.assertRaises(
|
||||||
|
TypeError,
|
||||||
|
self.loop.add_signal_handler,
|
||||||
|
signal.SIGINT, simple_coroutine)
|
||||||
|
|
||||||
@mock.patch('asyncio.unix_events.signal')
|
@mock.patch('asyncio.unix_events.signal')
|
||||||
def test_add_signal_handler(self, m_signal):
|
def test_add_signal_handler(self, m_signal):
|
||||||
m_signal.NSIG = signal.NSIG
|
m_signal.NSIG = signal.NSIG
|
||||||
|
|
|
@ -36,6 +36,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #22841: Reject coroutines in asyncio add_signal_handler().
|
||||||
|
Patch by Ludovic.Gasc.
|
||||||
|
|
||||||
- Issue #22849: Fix possible double free in the io.TextIOWrapper constructor.
|
- Issue #22849: Fix possible double free in the io.TextIOWrapper constructor.
|
||||||
|
|
||||||
- Issue #12728: Different Unicode characters having the same uppercase but
|
- Issue #12728: Different Unicode characters having the same uppercase but
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue