Hello--

I have a case here on ROUTER / tcp
based sockets (actually, the type doesn't matter),
where if the curve client has a bad/wrong
file for the server public key, then  I'd hope
that what happens in zeromq-4.0.4 is a bug!

Looking at the exchange via wireshark,
I see a CURVE message sent and returned,
and then a HELLO message is sent. If the server
public key is correct, we would normally get
a WELCOME message.

But, when it's the wrong key, I a FIN packets
sent instead of a WELCOME, and then, the whole
exchange repeats over and over quite rapidly.
After the server responds with a FIN packet,
the client ACKs that, and then the server ACKs
that. Then the client sends a SYN, and the server
ACKs that, and the client ACKs that. (I assume this is
typical tcp behavior.).  Then the client sends
a message and the server responds. Then the client
sends a CURVE, and the server responds, and then
the HELLO again. This process is repeated over and
over. There is no error message generated by either
the client or server, even tho both have zauth verbose
set.

I've looked over the code, and it's a bit questionable
to me exactly where to put the ZAUTH error message,
as this code is buried down in the libzmq layer.
But, I think it would only be proper to generate a
descriptive Error message, and let everyone know that
there's a bad key in the pot, and NOT generate a lot of
useless traffic.

It is easy to reproduce. Just take the
ironhouse client, and pass a bad key in the the call to
zsocket_set_curve_serverkey(). Use wireshark to watch
the fireworks. All the action is in
zmq::curve_server_t::process_hello and
zmq::curve_server_t::process_handshake_command.

murf


-- 

Steve Murphy
ParseTree Corporation
57 Lane 17
Cody, WY 82414
✉  murf at parsetree dot com
☎ 307-899-5535
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to