Miguel da Rocha Correia Lima created PROTON-661:
---------------------------------------------------
Summary: pn_message_save_* do not return correct message size when
PN_OVERFLOW
Key: PROTON-661
URL: https://issues.apache.org/jira/browse/PROTON-661
Project: Qpid Proton
Issue Type: Bug
Components: proton-c
Affects Versions: 0.7, 0.5, 0.4
Environment: All plataforms
Reporter: Miguel da Rocha Correia Lima
Priority: Critical
Expected behavior:
When you use pn_message_save* functions API, you pass char *data and char
*size. If the size IS NOT enough to save mesage body text, this functions
return in char *size variable, the necessary buffer size and return PN_OVERFLOW
status.
Behavior observed:
The pn_message_save* functions API return PN_OVERFLOW status and DO NOT return
a correct value of necessary buffer.
Patch to fix expected behavior :
--<cut>--------------------------------------------------------------------
diff -Naur qpid-proton-0.7-ORIG/proton-c/src/message/message.c
qpid-proton-0.7-LDX/p
--- qpid-proton-0.7-ORIG/proton-c/src/message/message.c 2014-03-10
13:33:11.00000000
+++ qpid-proton-0.7-LDX/proton-c/src/message/message.c 2014-09-04
23:31:44.92800000
@@ -972,6 +972,7 @@
pn_data_error(msg->body));
if (scanned) {
if (bytes.size > *size) {
+ *size = bytes.size;
return PN_OVERFLOW;
} else {
memcpy(data, bytes.start, bytes.size);
@@ -994,6 +995,7 @@
{
pn_bytes_t str = pn_data_get_bytes(msg->body);
if (str.size >= *size) {
+ *size = str.size;
return PN_OVERFLOW;
} else {
memcpy(data, str.start, str.size);
--<cut>--------------------------------------------------------------------
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)