Claus Ibsen created CAMEL-26178:
-----------------------------------
Summary: camel-coap - a POST/PUT body that cannot be converted to
byte[] is sent as an empty payload, and the consumer answers such a reply body
with an empty 2.05
Key: CAMEL-26178
URL: https://issues.apache.org/jira/browse/CAMEL-26178
Project: Camel
Issue Type: Bug
Components: camel-coap
Reporter: Claus Ibsen
Fix For: 4.24.0
Found while adding the catalog body types of coap, coaps, coap+tcp and
coaps+tcp (CAMEL-24961, PR #28411).
h4. 1. The producer sends an empty payload for a body it cannot convert
{{CoAPProducer.process}} (main 2a465aa4814c, lines 73 and 77) reads the POST
and PUT payload with {{exchange.getIn().getBody(byte[].class)}}. For a body
that has no {{byte[]}} converter (a Map, a POJO, an Integer 42) this is null,
and Californium sends the request with an empty payload. There is no error, so
the message is lost without notice. Checked on 4.24.0-SNAPSHOT with an embedded
Californium UDP and TCP server.
Proposed: read the payload with {{getMandatoryBody(byte[].class)}} so such a
body fails the exchange.
h4. 2. The consumer answers an unconvertible reply body with 2.05 and an empty
payload
{{CamelCoapResource.handleRequest}} (main 2a465aa4814c, line 168) responds with
{{target.getBody(byte[].class)}}. A Map, POJO or Integer reply body gives null,
so the client gets {{2.05 Content}} with an empty payload; a List gives
{{5.00}}. The coap doc ("Error responses from the CoAP consumer") says a body
that cannot be converted to the response payload gives {{5.00 Internal Server
Error}}. Checked on 4.24.0-SNAPSHOT with an embedded Californium server.
Proposed: use {{getMandatoryBody(byte[].class)}} for a non-null reply body, so
the existing catch answers {{5.00}} as documented.
_Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)