[zeromq-dev] ZMQ appends weird characters to message
Thomas Rodgers
rodgert at twrodgers.com
Mon Sep 15 19:23:08 CEST 2014
When you create a message via zmq_init_data() (which zmq::message_t does
with the constructor args you specified, and specify NULL for the ffn
argument, it becomes a "const message", which means that ZeroMQ assumes
ownership of the pointer you handed it (it's a "cmsg" type, e.g. *const*
data). It does not make a copy (see msg.cpp line 86 in the zmq 4.0
sources). If you then use std::string to modify the string contents
*before* the receiving side has constructed it's copy the string, you are
going to see corrupted data.
On Mon, Sep 15, 2014 at 10:02 AM, Dávid Kaya <mail at davidkaya.sk> wrote:
> Well I tried to recreate the problem but it works as intended in my
> short example. I really don't know where could be the problem since I am
> doing it exactly the same way in my example as in my application. Maybe
> the problem is in the std::string, because when I use
> std::string.replace() to replace some characters in the URL then it
> works fine. But when I dont use it and append the URL to "success:"
> message right away, then it does not work. So maybe
> std::string.replace() somehow fixes the string when it rearranges it.
> The first problem with "login" was because I wasn't using size() in
> string constructor.
>
> David
>
> On 15.09.2014 17:56, gonzalo diethelm wrote:
> > Please create a short (as short as possible) example that shows this
> > symptom, and post it to the list.
> >
> > --
> > Gonzalo Diethelm
> > DCV Chile
> >
> >> -----Original Message-----
> >> From: zeromq-dev-bounces at lists.zeromq.org [mailto:zeromq-dev-
> >> bounces at lists.zeromq.org] On Behalf Of Dávid Kaya
> >> Sent: Monday, September 15, 2014 12:39 PM
> >> To: ZeroMQ development list
> >> Subject: Re: [zeromq-dev] ZMQ appends weird characters to message
> >>
> >> Yes, I've printed that message. There can't be any NULL byte there.
> >> It is string
> >> "success:" appended with url. It is normal url like
> >> "http://example.org/path/to/jsp?lang=en_US?session="session id
> >> here".
> >> That session ID contains numbers, characters and dashes.
> >>
> >>
> >> On 15.09.2014 17:30, gonzalo diethelm wrote:
> >> > No, this is not a (known) limitation. Did you print exactly what
> >> you
> >> > are sending and what you are receiving? My guess is you are
> >> putting a
> >> > null byte in the middle of what you are sending.
> >> >
> >> > --
> >> > Gonzalo Diethelm
> >> > DCV Chile
> >> >
> >> >> -----Original Message-----
> >> >> From: zeromq-dev-bounces at lists.zeromq.org [mailto:zeromq-dev-
> >> >> bounces at lists.zeromq.org] On Behalf Of Dávid Kaya
> >> >> Sent: Monday, September 15, 2014 12:21 PM
> >> >> To: zeromq-dev at lists.zeromq.org
> >> >> Subject: Re: [zeromq-dev] ZMQ appends weird characters to message
> >> >>
> >> >> Well, I've printed out size and it is correct. I've also
> >> shortened
> >> >> the message by 5 characters and it stopped cutting off the last
> >> >> characters (atleast I think it stopped, tried 15 times and it
> >> came
> >> >> correct every time). So I think the problem was in the length of
> >> the
> >> >> message. I don't know if it is a bug in ZMQ or system limitation
> >> of
> >> >> socket files?
> >> >>
> >> >> David
> >> >>
> >> >>
> >> >> On 15.09.2014 16:47, gonzalo diethelm wrote:
> >> >> > Good point. Forgot about the specific details for that C++
> >> >> > constructor. The null byte should not be required.
> >> >> >
> >> >> > As Tom points out, you should print out what you are sending
> >> and
> >> >> > receiving (contents and length) and make sure it makes sense.
> >> >> >
> >> >> > HTH.
> >> >> >
> >> >> > --
> >> >> > Gonzalo Diethelm
> >> >> > DCV Chile
> >> >> >
> >> >> >> -----Original Message-----
> >> >> >> From: zeromq-dev-bounces at lists.zeromq.org [mailto:zeromq-dev-
> >> >> >> bounces at lists.zeromq.org] On Behalf Of Tom Quarendon
> >> >> >> Sent: Monday, September 15, 2014 11:42 AM
> >> >> >> To: ZeroMQ development list
> >> >> >> Subject: Re: [zeromq-dev] ZMQ appends weird characters to
> >> message
> >> >> >>
> >> >> >> > You have two choices:
> >> >> >> > 1. Send the '\0' as part of the message (and set length to
> >> one
> >> >> >> more byte).
> >> >> >> > 2. Append a '\0' after receiving the message.
> >> >> >>
> >> >> >> Uh, why?
> >> >> >> string(static_cast<char*>(reply.data()),reply.size());
> >> >> >> doesn't assume the string is null terminated. It constructs
> >> >> string
> >> >> >> from pointer and length. Isn't adding a in a null just going
> >> mask
> >> >> the
> >> >> >> real issue and make it look like the std::string only
> >> contained
> >> >> >> "login" when really it still contained the extra stuff as
> >> well.
> >> >> >> David, Do you know what reply.size() actually contains? Have
> >> you
> >> >> >> tried printing that out and comparing it to what you expect?
> >> >> >>
> >> >> >> _______________________________________________
> >> >> >> zeromq-dev mailing list
> >> >> >> zeromq-dev at lists.zeromq.org
> >> >> >> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
> >> >> >
> >> >> >
> >> >> > -----------------------------------------
> >> >> > Declaración de confidencialidad: Este Mensaje esta destinado
> >> para
> >> >> el
> >> >> > uso de la o las personas o entidades a quien ha sido dirigido y
> >> >> puede
> >> >> > contener información reservada y confidencial que no puede ser
> >> >> > divulgada, difundida, ni aprovechada en forma alguna. El uso no
> >> >> > autorizado de la información contenida en este correo podrá ser
> >> >> > sancionado de conformidad con la ley chilena.
> >> >> > Si usted ha recibido este correo electrónico por error, le
> >> pedimos
> >> >> > eliminarlo junto con los archivos adjuntos y avisar
> >> inmediatamente
> >> >> al
> >> >> > remitente, respondiendo este mensaje.
> >> >> >
> >> >> > "Before printing this e-mail think if is really necesary".
> >> >> > Disclosure: This Message is to be used by the individual,
> >> >> individuals
> >> >> > or entities that it is addressed to and may include private and
> >> >> > confidential information that may not be disclosed, made public
> >> >> nor
> >> >> > used in any way at all. Unauthorized use of the information in
> >> >> this
> >> >> > electronic mail message may be subject to the penalties set
> >> forth
> >> >> by
> >> >> > Chilean law.
> >> >> > If you have received this electronic mail message in error, we
> >> ask
> >> >> you
> >> >> > to destroy the message and its attached file(s) and to
> >> immediately
> >> >> > notify the sender by answering this message.
> >> >> > _______________________________________________
> >> >> > zeromq-dev mailing list
> >> >> > zeromq-dev at lists.zeromq.org
> >> >> > http://lists.zeromq.org/mailman/listinfo/zeromq-dev
> >> >>
> >> >> _______________________________________________
> >> >> zeromq-dev mailing list
> >> >> zeromq-dev at lists.zeromq.org
> >> >> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
> >> >
> >> > -----------------------------------------
> >> > Declaración de confidencialidad: Este Mensaje esta destinado para
> >> el
> >> > uso de la o las personas o entidades a quien ha sido dirigido y
> >> puede
> >> > contener información reservada y confidencial que no puede ser
> >> > divulgada, difundida, ni aprovechada en forma alguna. El uso no
> >> > autorizado de la información contenida en este correo podrá ser
> >> > sancionado de conformidad con la ley chilena.
> >> > Si usted ha recibido este correo electrónico por error, le pedimos
> >> > eliminarlo junto con los archivos adjuntos y avisar inmediatamente
> >> al
> >> > remitente, respondiendo este mensaje.
> >> >
> >> > "Before printing this e-mail think if is really necesary".
> >> > Disclosure: This Message is to be used by the individual,
> >> individuals
> >> > or entities that it is addressed to and may include private and
> >> > confidential information that may not be disclosed, made public
> >> nor
> >> > used in any way at all. Unauthorized use of the information in
> >> this
> >> > electronic mail message may be subject to the penalties set forth
> >> by
> >> > Chilean law.
> >> > If you have received this electronic mail message in error, we ask
> >> you
> >> > to destroy the message and its attached file(s) and to immediately
> >> > notify the sender by answering this message.
> >> > _______________________________________________
> >> > zeromq-dev mailing list
> >> > zeromq-dev at lists.zeromq.org
> >> > http://lists.zeromq.org/mailman/listinfo/zeromq-dev
> >>
> >> _______________________________________________
> >> zeromq-dev mailing list
> >> zeromq-dev at lists.zeromq.org
> >> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
> > _______________________________________________
> > zeromq-dev mailing list
> > zeromq-dev at lists.zeromq.org
> > http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20140915/274173aa/attachment.htm>
More information about the zeromq-dev
mailing list