[zeromq-dev] bug in kvmsg.c (zguide example)

Viet Hoang (Quant Edge) viet.hoang at quant-edge.com
Sat Apr 21 09:13:51 CEST 2012


Hello,

 

There is a bug in kvmsg_dup function which will crash the broker
occasionally. We have a fix for it as below

 

 

//  ---------------------------------------------------------------------

//  Create duplicate of kvmsg

 

kvmsg_t *

kvmsg_dup (kvmsg_t *self)

{

    kvmsg_t *kvmsg = kvmsg_new (0);

    char *prop;

    int frame_nbr;

 

    for (frame_nbr = 0; frame_nbr < KVMSG_FRAMES; frame_nbr++) {

        if (self->present [frame_nbr]) {

            zmq_msg_t *src = &self->frame [frame_nbr];

            zmq_msg_t *dst = &kvmsg->frame [frame_nbr];

            zmq_msg_init_size (dst, zmq_msg_size (src));

            memcpy (zmq_msg_data (dst),

                    zmq_msg_data (src), zmq_msg_size (src));

            kvmsg->present [frame_nbr] = 1;

        }

    }

    kvmsg->props_size = zlist_size (self->props);

 

    prop = (char *) zlist_first (self->props);

    while (prop) {

        zlist_append (kvmsg->props, strdup (prop));

        prop = (char *) zlist_next (self->props);

    }

 

    return kvmsg;

}

 

Cheers,

 

Viet

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20120421/021091c0/attachment.htm>


More information about the zeromq-dev mailing list