summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLassi Marttala <Lassi.LM.Marttala@partner.bmw.de>2012-09-26 09:07:15 +0200
committerLassi Marttala <Lassi.LM.Marttala@partner.bmw.de>2012-10-09 13:45:42 +0200
commitb7c4e65fbd95c8f4444fd357d70915e0e012b7a9 (patch)
tree7161606b24aed5edc4f2d399e231e5d7ad63d9da
parentf9aef5f826a1c72c7b0066fa68891edee9416a61 (diff)
downloadDLT-daemon-b7c4e65fbd95c8f4444fd357d70915e0e012b7a9.tar.gz
[GDLT-137]: Add future resend request when pushed into buffer.
-rw-r--r--src/lib/dlt_user.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/lib/dlt_user.c b/src/lib/dlt_user.c
index 7c87174..92c1233 100644
--- a/src/lib/dlt_user.c
+++ b/src/lib/dlt_user.c
@@ -2074,9 +2074,10 @@ void dlt_user_trace_network_segmented_thread(void *unused)
}
/* Indicator just to try to flush the buffer */
- if(data == (s_segmented_data *)DLT_DELAYED_RESEND_INDICATOR_PATTERN)
+ if(data->payload == (void *)DLT_DELAYED_RESEND_INDICATOR_PATTERN)
{
dlt_user_log_resend_buffer();
+ free(data);
continue;
}
@@ -2806,9 +2807,18 @@ DltReturnValue dlt_user_log_send_log(DltContextData *log, int mtype)
DLT_SEM_FREE();
- /* Ask segmented thread to try emptying the buffer soon. */
- void *indic = (void *)DLT_DELAYED_RESEND_INDICATOR_PATTERN;
- mq_send(dlt_user.dlt_segmented_queue_read_handle, (char *)&indic, sizeof(void *), 1);
+ /**
+ * Ask segmented thread to try emptying the buffer soon.
+ * This will be freed in dlt_user_trace_network_segmented_thread
+ * */
+ s_segmented_data *resend_data = malloc(sizeof(s_segmented_data));
+ resend_data->payload = (void *)DLT_DELAYED_RESEND_INDICATOR_PATTERN;
+ if(mq_send(dlt_user.dlt_segmented_queue_write_handle, (char *)&resend_data, sizeof(s_segmented_data *), 1) < 0)
+ {
+ dlt_log(LOG_ERR,"Could not request resending.\n");
+ dlt_log(LOG_ERR, strerror(errno));
+ free(resend_data);
+ }
}
switch (ret)