[zeromq-dev] CurveZMQ thoughts
Laurent Alebarde
l.alebarde at free.fr
Sun Aug 25 20:50:41 CEST 2013
Hi all,
Here are some thoughts after having tested curvezmq and analysed the
source code :
1) A czmq zmsg extension to curvezmq would be nice. I assume it would be
included in curvezmq.
2) It looks like the second s_encrypt in s_produce_initiate can use
precom since it is (c'->S'). Same on the server side, precom could be
computed earlier inside s_produce_welcome to be used as of
s_process_initiate in the second s_decrypt.
3) It is writen in the TODO lines : "don't assert, but raise error on
connection". In my understanding, the error may be returned (process
function prototypes changed from return value void to int), and used by
curvezmq_codec_execute to reset the state machine. On the server side,
there shall not exist exception from bad client messages.
4) It may be a good idea to test the possible NULL return value from the
s_produce_ functions.
5) verbose should be passed to server_task
6) In s_process_hello, the signature should be compared to the original one.
7) In s_process_ready, the client metadata are overwritten by server's
ones. Is it the expected behaviour ?
8) In s_process_ready, no size check is performed ws the hard-coded
limit 1,000, what can lead to memory violation. Would it be preferable
to malloc the metadata ?
and a question :
1) What would be the best design to handle several clients starting an
handshake on the same server socket in the same time ? I think of a hash
table with the sender id as a key, and a struct {lifetime;
curvezmq_codec_t*} as its value. The lifetime would be reset each time a
valid message is received.
I hope it is usefull ;-) .
Cheers,
Laurent.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20130825/93b7ba0d/attachment.htm>
More information about the zeromq-dev
mailing list