From 64e5e381e0429c02f97f8a0a872e3d908d077297 Mon Sep 17 00:00:00 2001
From: Sven Gestegard Robertz <sven.robertz@cs.lth.se>
Date: Fri, 21 Nov 2014 20:59:40 +0100
Subject: [PATCH] experimental sigparser

---
 lib/c/experimental/labcomm_sig_parser.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/lib/c/experimental/labcomm_sig_parser.c b/lib/c/experimental/labcomm_sig_parser.c
index 23e3758..7c95b65 100644
--- a/lib/c/experimental/labcomm_sig_parser.c
+++ b/lib/c/experimental/labcomm_sig_parser.c
@@ -401,11 +401,13 @@ int accept_packet(labcomm_sig_parser_t *d) {
 		advancen(d, nbytes);
 		d->current_decl_is_varsize = FALSE; // <-- a conveniance flag in labcomm_sig_parser_t
 		VERBOSE_PRINTF("type_decl ");
+        get_varint(d); //ignore length field
 		accept_signature(d);
 	} else if (type == SAMPLE_DECL) {
 		d->current_decl_is_varsize = FALSE; // <-- a conveniance flag in labcomm_sig_parser_t
 		advancen(d, nbytes);
 		VERBOSE_PRINTF("sample_decl ");
+        get_varint(d); //ignore length field
 		accept_signature(d);
 	} else if(type >= LABCOMM_USER) {
 #ifdef EXIT_WHEN_RECEIVING_DATA
@@ -603,14 +605,19 @@ static int accept_sample_data(labcomm_sig_parser_t *d){
 	accept_user_id(d);
 	unsigned int uid = pop_val(d);	
 	printf("sample data... uid=0x%x\n", uid);
+    int len = get_varint(d); //length field
 #ifdef DEBUG
 	dump_signature(d, uid);
 #endif
+#ifdef SKIP_BY_PARSING
 	labcomm_signature_t *sigt = get_sig_t(d, uid);
 	int encoded_size = sigt->encoded_size(sigt, NULL);
 	INFO_PRINTF("encoded_size from sig: %d\n", encoded_size);
 	labcomm_signature_t *sig = get_sig_t(d, uid);
 	skip_packed_sample_data(d, sig);
+#else
+	advancen(d, len);
+#endif
 	return TRUE;
 }
 
-- 
GitLab