);
// see how long this chunk is. If this is the last
- // chunk, it will likely not be equal to chunk_size
+ // chunk, it will likely be less than chunk_size
int partial_size = strlen(&data_str[i]);
+ if (partial_size > chunk_size)
+ partial_size = chunk_size;
// substr(data_str, i, partial_size)
char partial_buf[partial_size + 1];
osrf_message_set_result(msg, partial_obj);
jsonObjectFree(partial_obj);
- // Serialize the OSRF message as JSON for delivery
- char* json = jsonObjectToJSON(osrfMessageToJSON(msg));
+ // package the osrf message within an array then
+ // serialize to json for delivery
+ jsonObject* arr = jsonNewObject(NULL);
+
+ // msg json freed when arr is freed
+ jsonObjectPush(arr, osrfMessageToJSON(msg));
+ char* json = jsonObjectToJSON(arr);
+
osrfSendTransportPayload(ctx->session, json);
osrfMessageFree(msg);
+ jsonObjectFree(arr);
free(json);
}
OSRF_STATUS_NOCONTENT
);
- char* json = jsonObjectToJSON(osrfMessageToJSON(msg));
+ jsonObject* arr = jsonNewObject(NULL);
+ jsonObjectPush(arr, osrfMessageToJSON(msg));
+ char* json = jsonObjectToJSON(arr);
osrfSendTransportPayload(ctx->session, json);
osrfMessageFree(msg);
+ jsonObjectFree(arr);
free(json);