Skip to content
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

Session not found when using sio.transport(sid) due to wrong session id #1299

Closed
LostInDarkMath opened this issue Jan 13, 2024 · 1 comment
Closed
Assignees
Labels

Comments

@LostInDarkMath
Copy link

Describe the bug
Seems like the sio.transport() method does work as expected.

To Reproduce
Use this connect callback:

import logging
from socketio import AsyncServer
sio: AsyncServer

async def on_connect(session_id: str, environ: dict) -> None:
    other_sid = sio.manager.eio_sid_from_sid(sid=session_id, namespace='/')
    logging.info(f'SocketIO: user {session_id} uses transport {sio.transport(other_sid)}')  # works fine
    logging.info(f'SocketIO: user {session_id} uses transport {sio.transport(session_id)}')  # crashes with KeyError

Expected behavior
I would not expect to translate the sid myself. The library should handle this for me like in sio.save_session().

Logs

2024-01-13 17:58:12,181.181: INFO     SocketIO: user mjMOEbi52VyD5N3wAAAB uses transport websocket
message async handler error
Traceback (most recent call last):
  File "/home/willi/Documents/repositories/FCM_Python_Flutter_Test/src/backend/venv/lib/python3.11/site-packages/engineio/base_server.py", line 224, in _get_socket
    s = self.sockets[sid]
        ~~~~~~~~~~~~^^^^^
KeyError: 'mjMOEbi52VyD5N3wAAAB'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/willi/Documents/repositories/FCM_Python_Flutter_Test/src/backend/venv/lib/python3.11/site-packages/engineio/async_server.py", line 483, in run_async_handler
    return await self.handlers[event](*args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/willi/Documents/repositories/FCM_Python_Flutter_Test/src/backend/venv/lib/python3.11/site-packages/socketio/async_server.py", line 669, in _handle_eio_message
    await self._handle_connect(eio_sid, pkt.namespace, pkt.data)
  File "/home/willi/Documents/repositories/FCM_Python_Flutter_Test/src/backend/venv/lib/python3.11/site-packages/socketio/async_server.py", line 552, in _handle_connect
    success = await self._trigger_event(
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/willi/Documents/repositories/FCM_Python_Flutter_Test/src/backend/venv/lib/python3.11/site-packages/socketio/async_server.py", line 634, in _trigger_event
    ret = await handler(*args)
          ^^^^^^^^^^^^^^^^^^^^
  File "/home/willi/Documents/repositories/FCM_Python_Flutter_Test/src/backend/api/mobile_app/socketio/routes.py", line 22, in on_connect
    logging.info(f'SocketIO: user {session_id} uses transport {sio.transport(session_id)}')
                                                               ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/willi/Documents/repositories/FCM_Python_Flutter_Test/src/backend/venv/lib/python3.11/site-packages/socketio/base_server.py", line 198, in transport
    return self.eio.transport(sid)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/willi/Documents/repositories/FCM_Python_Flutter_Test/src/backend/venv/lib/python3.11/site-packages/engineio/base_server.py", line 157, in transport
    return 'websocket' if self._get_socket(sid).upgraded else 'polling'
                          ^^^^^^^^^^^^^^^^^^^^^
  File "/home/willi/Documents/repositories/FCM_Python_Flutter_Test/src/backend/venv/lib/python3.11/site-packages/engineio/base_server.py", line 226, in _get_socket
    raise KeyError('Session not found')
KeyError: 'Session not found'
2024-01-13 17:58:12,181.181: ERROR    message async handler error
Traceback (most recent call last):
  File "/home/willi/Documents/repositories/FCM_Python_Flutter_Test/src/backend/venv/lib/python3.11/site-packages/engineio/base_server.py", line 224, in _get_socket
    s = self.sockets[sid]
        ~~~~~~~~~~~~^^^^^
KeyError: 'mjMOEbi52VyD5N3wAAAB'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/willi/Documents/repositories/FCM_Python_Flutter_Test/src/backend/venv/lib/python3.11/site-packages/engineio/async_server.py", line 483, in run_async_handler
    return await self.handlers[event](*args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/willi/Documents/repositories/FCM_Python_Flutter_Test/src/backend/venv/lib/python3.11/site-packages/socketio/async_server.py", line 669, in _handle_eio_message
    await self._handle_connect(eio_sid, pkt.namespace, pkt.data)
  File "/home/willi/Documents/repositories/FCM_Python_Flutter_Test/src/backend/venv/lib/python3.11/site-packages/socketio/async_server.py", line 552, in _handle_connect
    success = await self._trigger_event(
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/willi/Documents/repositories/FCM_Python_Flutter_Test/src/backend/venv/lib/python3.11/site-packages/socketio/async_server.py", line 634, in _trigger_event
    ret = await handler(*args)
          ^^^^^^^^^^^^^^^^^^^^
  File "/home/willi/Documents/repositories/FCM_Python_Flutter_Test/src/backend/api/mobile_app/socketio/routes.py", line 22, in on_connect
    logging.info(f'SocketIO: user {session_id} uses transport {sio.transport(session_id)}')
                                                               ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/willi/Documents/repositories/FCM_Python_Flutter_Test/src/backend/venv/lib/python3.11/site-packages/socketio/base_server.py", line 198, in transport
    return self.eio.transport(sid)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/willi/Documents/repositories/FCM_Python_Flutter_Test/src/backend/venv/lib/python3.11/site-packages/engineio/base_server.py", line 157, in transport
    return 'websocket' if self._get_socket(sid).upgraded else 'polling'
                          ^^^^^^^^^^^^^^^^^^^^^
  File "/home/willi/Documents/repositories/FCM_Python_Flutter_Test/src/backend/venv/lib/python3.11/site-packages/engineio/base_server.py", line 226, in _get_socket
    raise KeyError('Session not found')
KeyError: 'Session not found'
@miguelgrinberg miguelgrinberg self-assigned this Jan 13, 2024
@miguelgrinberg
Copy link
Owner

Thanks, I will take care of it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants