- // received type from remote device
- if (CA_MSG_ACKNOWLEDGE == pdu->hdr->coap_hdr_udp_t.type)
- {
- uint32_t code = CA_RESPONSE_CODE(pdu->hdr->coap_hdr_udp_t.code);
- if (0 == block.m &&
- (CA_REQUEST_ENTITY_INCOMPLETE != code && CA_REQUEST_ENTITY_TOO_LARGE != code))
- {
- int isBlock2 = coap_get_block(pdu, COAP_OPTION_BLOCK2, &block);
- if (isBlock2)
- {
- OIC_LOG(INFO, TAG, "received data is combining block1 and block2");
- // initialize block number for response message
- data->block1.num = 0;
- CADestroyBlockID(blockDataID);
- return CA_STATUS_OK;
- }
- else
- {
- OIC_LOG(INFO, TAG, "received data is not bulk data");
- CAReceiveLastBlock(blockDataID, receivedData);
- CARemoveBlockDataFromList(blockDataID);
- CADestroyBlockID(blockDataID);
- return CA_STATUS_OK;
- }
- }
-
- blockWiseStatus = CA_OPTION1_ACK;
- res = CAUpdateBlockOptionItems(data, pdu, &block, COAP_OPTION_BLOCK1, blockWiseStatus);
- if (CA_STATUS_OK != res)
- {
- OIC_LOG(ERROR, TAG, "update has failed");
- CADestroyBlockID(blockDataID);
- return res;
- }
-
- res = CAUpdateBlockData(data, block, COAP_OPTION_BLOCK1);
- if (CA_STATUS_OK != res)
- {
- OIC_LOG(ERROR, TAG, "update has failed");
- CARemoveBlockDataFromList(blockDataID);
- CADestroyBlockID(blockDataID);
- return res;
- }
- }
- else // CON or NON message