Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: iothub_client_sample_http simplesample_http temp_sensor_anomaly
Revision 7:48f0f78cd3ef, committed 2015-11-02
- Comitter:
- AzureIoTClient
- Date:
- Mon Nov 02 19:21:17 2015 -0800
- Parent:
- 6:73793bae15ba
- Child:
- 8:1b71bf027eb5
- Commit message:
- v1.0.0-preview.4
Changed in this revision
| iothubtransporthttp.c | Show annotated file Show diff for this revision Revisions of this file |
--- a/iothubtransporthttp.c Thu Oct 22 18:33:19 2015 -0700
+++ b/iothubtransporthttp.c Mon Nov 02 19:21:17 2015 -0800
@@ -23,6 +23,8 @@
#include "agenttime.h"
#define IOTHUB_APP_PREFIX "iothub-app-"
+const char* IOTHUB_MESSAGE_ID = "iothub-messageid";
+const char* IOTHUB_CORRELATION_ID = "iothub-correlationid";
#define CONTENT_TYPE "Content-Type"
#define APPLICATION_OCTET_STREAM "application/octet-stream"
@@ -1146,6 +1148,27 @@
}
}
+ // Add the Message Id and the Correlation Id
+ const char* msgId = IoTHubMessage_GetMessageId(message->messageHandle);
+ if (goOn && msgId != NULL)
+ {
+ if (HTTPHeaders_ReplaceHeaderNameValuePair(clonedEventHTTPrequestHeaders, IOTHUB_MESSAGE_ID, msgId) != HTTP_HEADERS_OK)
+ {
+ LogError("unable to HTTPHeaders_ReplaceHeaderNameValuePair\r\n");
+ goOn = false;
+ }
+ }
+
+ const char* corrId = IoTHubMessage_GetCorrelationId(message->messageHandle);
+ if (goOn && corrId != NULL)
+ {
+ if (HTTPHeaders_ReplaceHeaderNameValuePair(clonedEventHTTPrequestHeaders, IOTHUB_CORRELATION_ID, corrId) != HTTP_HEADERS_OK)
+ {
+ LogError("unable to HTTPHeaders_ReplaceHeaderNameValuePair\r\n");
+ goOn = false;
+ }
+ }
+
if (!goOn)
{
/*Codes_SRS_IOTHUBTRANSPORTTHTTP_02_108: [If any HTTP header operation fails, _DoWork shall advance to the next action.] */
@@ -1461,6 +1484,7 @@
else
{
/*Codes_SRS_IOTHUBTRANSPORTTHTTP_02_087: [All the HTTP headers of the form iothub-app-name:somecontent shall be transformed in message properties {name, somecontent}.]*/
+ /*Codes_SRS_IOTHUBTRANSPORTTHTTP_07_008: [The HTTP header of iothub-messageid shall be set in the MessageId.]*/
size_t nHeaders;
if (HTTPHeaders_GetHeaderCount(responseHTTPHeaders, &nHeaders) != HTTP_HEADERS_OK)
{
@@ -1485,11 +1509,40 @@
/*looks like a property headers*/
/*there's a guaranteed ':' in the completeHeader, by HTTP_HEADERS module*/
char* whereIsColon = strchr(completeHeader, ':');
- *whereIsColon = '\0'; /*cut it down*/
- if (Map_AddOrUpdate(properties, completeHeader + strlen(IOTHUB_APP_PREFIX), whereIsColon + 2) != MAP_OK) /*whereIsColon+1 is a space because HTTPEHADERS outputs a ": " between name and value*/
+ if (whereIsColon != NULL)
+ {
+ *whereIsColon = '\0'; /*cut it down*/
+ if (Map_AddOrUpdate(properties, completeHeader + strlen(IOTHUB_APP_PREFIX), whereIsColon + 2) != MAP_OK) /*whereIsColon+1 is a space because HTTPEHADERS outputs a ": " between name and value*/
+ {
+ free(completeHeader);
+ break;
+ }
+ }
+ }
+ else if (strncmp(IOTHUB_MESSAGE_ID, completeHeader, strlen(IOTHUB_MESSAGE_ID)) == 0)
+ {
+ char* whereIsColon = strchr(completeHeader, ':');
+ if (whereIsColon != NULL)
{
- free(completeHeader);
- break;
+ *whereIsColon = '\0'; /*cut it down*/
+ if (IoTHubMessage_SetMessageId(receivedMessage, whereIsColon + 2) != IOTHUB_MESSAGE_OK)
+ {
+ free(completeHeader);
+ break;
+ }
+ }
+ }
+ else if (strncmp(IOTHUB_CORRELATION_ID, completeHeader, strlen(IOTHUB_CORRELATION_ID)) == 0)
+ {
+ char* whereIsColon = strchr(completeHeader, ':');
+ if (whereIsColon != NULL)
+ {
+ *whereIsColon = '\0'; /*cut it down*/
+ if (IoTHubMessage_SetCorrelationId(receivedMessage, whereIsColon + 2) != IOTHUB_MESSAGE_OK)
+ {
+ free(completeHeader);
+ break;
+ }
}
}
free(completeHeader);
