Skip to content

Misultin doesn't close websocket connection on unmasked frame #99

@majek

Description

@majek

I'm using a python websocket client: WebSocket-for-Python. Actually, I'm using quite an old version:

    ./venv/bin/pip install git+git://github.com/majek/WebSocket-for-Python.git

With this client, the program hangs instead of quitting (utils.py)

from utils import WebSocket8Client
ws = WebSocket8Client("http://localhost:8000/")
ws.close() # program hangs here

Upon further investigation I was able to isolate the issue. The problem is that misultin is not closing a connection when receiving an unmasked frame (see: http://tools.ietf.org/html/rfc6455):

"The server MUST close the connection upon receiving a frame that is not masked"

Apparently misultin is not closing a connection when receiving frame \x88\x00 (unmasked fin frame). On the other hand, a proper close frame with masking, like \x88\x80\xaa\xaa\xaa\xaa seems to be understood by misultin (and the connection is clsoed).

Steps to reproduce: https://gist.github.com/1781022

  1. ./misultin_ws_close_bug.erl
  2. run node client-raw.js with sending [\x88, \x00] and see it hanging forever.
  3. run node client-raw.js with sending [\x88, \x80, \xaa, \xaa, \xaa, \xaa] and see it closing the connection quickly

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions