Does your server drop the TCP after having replied to the close
frame sent by the fuzzing client?
To get close clean, the appropriate peer must drop the TCP (there is
text with SHOULD in the spec about that).
The appropriate peer to drop the TCP is the server. Server SHOULD
drop, client SHOULD NOT drop. If thats
violated, case get close unclean.
What does the detail report say in the closing behavior block? In
When wasClean == False, the reason what
When we are a client, and we expected the
server to drop the TCP, but that didn’t happen in time, this
Compare to ..
or reply and attach the detail report HTML so I can have a look ..
Thanks for the swift answer. I guess I'm confused at the fact
that the tests fails saying that the server didn’t close the
socket in due time. If I look at how long the test took it says:
1001ms. Considering the 1s delay your test use before sending
the closing handshake, and the fact that the test says that the
server did return the appropriate closing code, I don’t
understand the unclean state.
I can see in my server that I reply to the closing handshake
as soon as I receive it.
taking case 1.1.1 as an example, the case sends a text
message and then waits 1s before initiating a
WS closing handshake with the peer (the waiting is done
because the case expects the text message
to be echo'ed by the peer):
The case will then be marked as "clean close" if the peer
responds to the closing handshake
by sending back a close frame and - if the peer is a server
something fully valid. When the
case does something violating the protocol or the case is
explicitly testing close behavior
things will be different ..
Hope this helps,
Am 14.12.2011 22:48, schrieb Sylvain Hellegouarch:
I'm working on ws4py and obviously I'm using Autobahn's
testsuite. Most of my tests pass but all of them are
What I don't understand is how the client actually close
Let's take case 1.1.1, it says it should be closed by the
client but I
fail to see when that happens. In any case, the connection
eventually killed and my test marked as unclean.
Some tests on the other hand do use the closeAfter method
explicitely close the stream after a delay.
Could someone shed a light because this drives me nuts :)