GARBAGE CHARACTER getting added in messages received in Request/Reply messaging method.
Hi Team,
I am using request and reply mechanism to send and receive messages. After I have sent the message, in the receiving Callback method i found that a garbage character is getting added at the end of the message. So on receiving the message, i am getting the garbage character,
Following is the way i am sending message:
std::string text_p = "ABCD";
solClient_uint32_t dataLen1 = ( solClient_uint32_t )strlen( (text_p.c_str()) );
solClient_opaqueMsg_pt replyMsg_p;
solClient_msg_alloc(&replyMsg_p);
solClient_opaqueMsg_pt msg_p = NULL;
solClient_msg_alloc ( &msg_p ) ;
solClient_msg_setDestination ( msg_p, &destination, sizeof ( destination ))
solClient_msg_setBinaryAttachment ( msg_p, text_p.c_str(), (dataLen1));
solClient_session_sendRequest ( session_p, msg_p, &replyMsg_p, timeout);
I am using C Api.
Can anyone please tell me what is adding the garbage character and how to fix it.
Thanks.
Comments
-
Is it random garbage? Or a null terminating character..?
Have you seen:
1 -
Hi @TestSolace, can I check the message flow here?
The above code sends a request/reply message, using the above code to a responding application.
Is the extra character received by the responding application?
Or does the responding application simply "bounce" the request back as a reply?
Could you add the code for the responding application? How are you displaying the message data, via solClient_msg_dump()?1 -
You have not posted the code that is seeing the 'extra' character so this is speculation. The publisher you have posted sends 4 bytes of payload as strlen does not include the null termination of a string. Any code that retrieves the payload will get 4 bytes of binary payload that happen to look like a string but is not a string as it is not null terminated. If you attempt to retrieve the payload and print it, it is quite likely that you will see garbage characters at the end, or crash.
3 -
Hi @Aaron ,
It is a random garbage.
Yes, i have followed all the Links as you hav mentioned.
Thanks.0 -
Hi @TomF
The functionality is such that, it has to get back the same message which it has sent.
So I am creating a reply in the Call back function using the message i have sent.
After that i am sending the constructed reply. I am showing the message using printf function.
Thanks.0 -
@TestSolace I think fixing the string null termination issue, as @Ragnar suggests, is the first thing to do.
1 -