Skip to content

Add an IOError when send() is called on a closed connection #431

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jan 16, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions specs/www.rst
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,17 @@ Keys:
ignored. Optional; if missing defaults to ``False``.


Disconnected Client - ``send`` exception
''''''''''''''''''''''''''''''''''''''''

If ``send()`` is called on a closed connection the server should raise
a server-specific subclass of ``IOError``.
Applications may catch this exception and do cleanup work before
re-raising it or returning with no exception.
Servers must be prepared to catch this exception if they raised it and
should not log it as an error in their server logs.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@andrewgodwin Isn't an update to this chapter https://asgi.readthedocs.io/en/latest/specs/www.html#disconnect-receive-event-ws also necessary? I find it misleading with the actual context if someone is reading it and now knowing/understanding it derives from https://asgi.readthedocs.io/en/latest/specs/www.html#disconnected-client-send-exception

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, they are not related to each other - the disconnect event is emitted when you call receive(), and the disconnected error is if you try to call send() once the other side has disconnected.

I'm happy to add more clarification there if you think it's still confusing.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're fully right, I've mixed up the things and I needed to give it a fresh look later on to catch up better on it.

I still think that if someone is looking up for infos/specs for WebSockets send events, it's unlikely that this person (if not reading the full page) will get that this could generate a IOError subclass exception.

The structure of the page does not make explicitly clear if the exception applies for both HTTP and WebSockets scope, that could be specified more.

Also (and this is more what my original thought in the first comment was), there could a short sentence/infobox/warning for every description of a send event that this could generate an exception...

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll go into the spec and see if I can add a bit of explicit clarification!



Disconnect - ``receive`` event
''''''''''''''''''''''''''''''

Expand Down