mirror of
https://github.com/openwrt/packages.git
synced 2026-01-09 19:31:21 +00:00
iotivity: update to version 1.2.1
This does the following changes: * update to version 1.2.1 * add iotivity-resource-directory-lib, this is needed by most applications now * do not activate security support by default, this caused some problems and needs some more settings to setup. * use sqlite version from normal package feed instead of using an own version * build against LEDE version of mbedtls * update example security configuration * remove some patches that went upstream * add some new patches fixing problems observed in my environment, most of them are on their way upstream. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
From 7fb5b6a19b06dc5b0a7f32261551b206b1e6a563 Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Sun, 8 Jan 2017 19:24:26 +0100
|
||||
Subject: [PATCH 3/3] src: move OCClientResponse from stack to heap
|
||||
|
||||
OCClientResponse is about 50KByte and should not be stored on the
|
||||
stack. On LEDE with MIPS, musl libc this causes a segmentation fault.
|
||||
Moving this structure to the heap is the simple solution for this
|
||||
problem, but this structure should be shrinked.
|
||||
|
||||
Change-Id: I7887f93450f45b8031fcdfffb9ee2214fc3d5dd2
|
||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
---
|
||||
resource/src/InProcServerWrapper.cpp | 44 +++++++++++++++++++++---------------
|
||||
1 file changed, 26 insertions(+), 18 deletions(-)
|
||||
|
||||
--- a/resource/src/InProcServerWrapper.cpp
|
||||
+++ b/resource/src/InProcServerWrapper.cpp
|
||||
@@ -568,51 +568,58 @@ namespace OC
|
||||
}
|
||||
else
|
||||
{
|
||||
- OCEntityHandlerResponse response;
|
||||
+ OCEntityHandlerResponse *response = NULL;
|
||||
+
|
||||
+ response = (OCEntityHandlerResponse *)OICCalloc(1, sizeof(*response));
|
||||
+ if (!response) {
|
||||
+ result = OC_STACK_MALFORMED_RESPONSE;
|
||||
+ throw OCException(OC::Exception::STR_NULL_RESPONSE, OC_STACK_MALFORMED_RESPONSE);
|
||||
+ }
|
||||
+
|
||||
// OCRepPayload* payLoad = pResponse->getPayload();
|
||||
HeaderOptions serverHeaderOptions = pResponse->getHeaderOptions();
|
||||
|
||||
- response.requestHandle = pResponse->getRequestHandle();
|
||||
- response.resourceHandle = pResponse->getResourceHandle();
|
||||
- response.ehResult = pResponse->getResponseResult();
|
||||
+ response->requestHandle = pResponse->getRequestHandle();
|
||||
+ response->resourceHandle = pResponse->getResourceHandle();
|
||||
+ response->ehResult = pResponse->getResponseResult();
|
||||
|
||||
- response.payload = reinterpret_cast<OCPayload*>(pResponse->getPayload());
|
||||
+ response->payload = reinterpret_cast<OCPayload*>(pResponse->getPayload());
|
||||
|
||||
- response.persistentBufferFlag = 0;
|
||||
+ response->persistentBufferFlag = 0;
|
||||
|
||||
- response.numSendVendorSpecificHeaderOptions = serverHeaderOptions.size();
|
||||
+ response->numSendVendorSpecificHeaderOptions = serverHeaderOptions.size();
|
||||
int i = 0;
|
||||
for (auto it=serverHeaderOptions.begin(); it != serverHeaderOptions.end(); ++it)
|
||||
{
|
||||
- response.sendVendorSpecificHeaderOptions[i].protocolID = OC_COAP_ID;
|
||||
- response.sendVendorSpecificHeaderOptions[i].optionID =
|
||||
+ response->sendVendorSpecificHeaderOptions[i].protocolID = OC_COAP_ID;
|
||||
+ response->sendVendorSpecificHeaderOptions[i].optionID =
|
||||
static_cast<uint16_t>(it->getOptionID());
|
||||
- response.sendVendorSpecificHeaderOptions[i].optionLength =
|
||||
+ response->sendVendorSpecificHeaderOptions[i].optionLength =
|
||||
(it->getOptionData()).length() + 1;
|
||||
std::string optionData = it->getOptionData();
|
||||
std::copy(optionData.begin(),
|
||||
optionData.end(),
|
||||
- response.sendVendorSpecificHeaderOptions[i].optionData);
|
||||
- response.sendVendorSpecificHeaderOptions[i].optionData[it->getOptionData().length()]
|
||||
+ response->sendVendorSpecificHeaderOptions[i].optionData);
|
||||
+ response->sendVendorSpecificHeaderOptions[i].optionData[it->getOptionData().length()]
|
||||
= '\0';
|
||||
i++;
|
||||
}
|
||||
|
||||
- if(OC_EH_RESOURCE_CREATED == response.ehResult)
|
||||
+ if(OC_EH_RESOURCE_CREATED == response->ehResult)
|
||||
{
|
||||
- pResponse->getNewResourceUri().copy(response.resourceUri,
|
||||
- sizeof (response.resourceUri) - 1);
|
||||
- response.resourceUri[pResponse->getNewResourceUri().length()] = '\0';
|
||||
+ pResponse->getNewResourceUri().copy(response->resourceUri,
|
||||
+ sizeof (response->resourceUri) - 1);
|
||||
+ response->resourceUri[pResponse->getNewResourceUri().length()] = '\0';
|
||||
}
|
||||
|
||||
if(cLock)
|
||||
{
|
||||
std::lock_guard<std::recursive_mutex> lock(*cLock);
|
||||
- result = OCDoResponse(&response);
|
||||
+ result = OCDoResponse(response);
|
||||
}
|
||||
else
|
||||
{
|
||||
- OICFree(response.payload);
|
||||
+ OICFree(response->payload);
|
||||
result = OC_STACK_ERROR;
|
||||
}
|
||||
|
||||
@@ -620,6 +627,7 @@ namespace OC
|
||||
{
|
||||
oclog() << "Error sending response\n";
|
||||
}
|
||||
+ OICFree(response);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user