MagicStack / MagicStack/uvloop

Transport sockets do not support shutdown() method

Ouverte
#241 9 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

need to fix asyncio
Langage dominant
Cython
Étoiles
11.9k
Forks
616
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

  • uvloop version: 0.12.2
  • Python version: 3.5.3
  • Platform: Debian 9
  • Can you reproduce the bug with PYTHONASYNCIODEBUG in env?: yes

An attempt to use shutdown method of transport socket causes following exception:

source_traceback: Object created at (most recent call last):
  File "/usr/local/bin/ssh-tarpit", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.5/dist-packages/ssh_tarpit/__main__.py", line 109, in main
    loop.run_until_complete(amain(args, loop))
  File "/usr/lib/python3.5/asyncio/streams.py", line 238, in connection_made
    self._stream_writer)
  File "/usr/local/lib/python3.5/dist-packages/ssh_tarpit/server.py", line 52, in _spawn
    self._loop.create_task(self.handler(reader, writer)))
Traceback (most recent call last):
  File "/usr/lib/python3.5/asyncio/tasks.py", line 239, in _step
    result = coro.send(None)
  File "/usr/lib/python3.5/asyncio/coroutines.py", line 125, in send
    return self.gen.send(value)
  File "/usr/local/lib/python3.5/dist-packages/ssh_tarpit/server.py", line 38, in handler
    sock.shutdown(socket.SHUT_RD)
  File "uvloop/pseudosock.pyx", line 155, in uvloop.loop.PseudoSocket.shutdown
  File "uvloop/pseudosock.pyx", line 19, in uvloop.loop.PseudoSocket._na
TypeError: transport sockets do not support shutdown() method

Such behavior is not observed with default event loop.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Lisez uvloop/pseudosock.pyx au niveau de PseudoSocket.shutdown ainsi que le chemin _na indiqué dans le traceback ; commencez par reproduire l’appel d’arrêt du socket avec les versions de Python et de uvloop signalées. C’est terminé lorsque le socket de transport gère l’arrêt sans le TypeError signalé et se comporte comme la boucle d’événements par défaut.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
networking
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.