mirror of
https://github.com/oliverschmidt/contiki.git
synced 2024-12-23 01:29:33 +00:00
Fix default CoAP header block2 size
When a client sends a CoAP request with no block2 size, the default one would be set to REST_MAX_CHUNK_SIZE. However, this is not guaranteed to be a power of 2. This can lead to clients receiving a bigger payload than expected as part of the header, and ending up with duplicated content. Setting the default to COAP_MAX_BLOCK_SIZE, which is guaranteed to be a power of 2, fixes this.
This commit is contained in:
parent
d5956d5c75
commit
5403b2a211
@ -104,7 +104,7 @@ coap_receive(void)
|
|||||||
coap_new_transaction(message->mid, &UIP_IP_BUF->srcipaddr,
|
coap_new_transaction(message->mid, &UIP_IP_BUF->srcipaddr,
|
||||||
UIP_UDP_BUF->srcport))) {
|
UIP_UDP_BUF->srcport))) {
|
||||||
uint32_t block_num = 0;
|
uint32_t block_num = 0;
|
||||||
uint16_t block_size = REST_MAX_CHUNK_SIZE;
|
uint16_t block_size = COAP_MAX_BLOCK_SIZE;
|
||||||
uint32_t block_offset = 0;
|
uint32_t block_offset = 0;
|
||||||
int32_t new_offset = 0;
|
int32_t new_offset = 0;
|
||||||
|
|
||||||
@ -125,8 +125,8 @@ coap_receive(void)
|
|||||||
if(coap_get_header_block2
|
if(coap_get_header_block2
|
||||||
(message, &block_num, NULL, &block_size, &block_offset)) {
|
(message, &block_num, NULL, &block_size, &block_offset)) {
|
||||||
PRINTF("Blockwise: block request %lu (%u/%u) @ %lu bytes\n",
|
PRINTF("Blockwise: block request %lu (%u/%u) @ %lu bytes\n",
|
||||||
block_num, block_size, REST_MAX_CHUNK_SIZE, block_offset);
|
block_num, block_size, COAP_MAX_BLOCK_SIZE, block_offset);
|
||||||
block_size = MIN(block_size, REST_MAX_CHUNK_SIZE);
|
block_size = MIN(block_size, COAP_MAX_BLOCK_SIZE);
|
||||||
new_offset = block_offset;
|
new_offset = block_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user