summaryrefslogtreecommitdiff
path: root/gr-digital/lib/header_payload_demux_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-digital/lib/header_payload_demux_impl.cc')
-rw-r--r--gr-digital/lib/header_payload_demux_impl.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/gr-digital/lib/header_payload_demux_impl.cc b/gr-digital/lib/header_payload_demux_impl.cc
index 7cc3ec3836..ba346e2ae7 100644
--- a/gr-digital/lib/header_payload_demux_impl.cc
+++ b/gr-digital/lib/header_payload_demux_impl.cc
@@ -184,6 +184,7 @@ namespace gr {
in += d_itemsize;
nread++;
d_state = STATE_FIND_TRIGGER;
+ // Fall through
case STATE_FIND_TRIGGER:
trigger_offset = find_trigger_signal(nread, noutput_items, input_items);
@@ -194,6 +195,7 @@ namespace gr {
consume_each (trigger_offset);
in += trigger_offset * d_itemsize;
d_state = STATE_HEADER;
+ // Fall through
case STATE_HEADER:
@@ -212,6 +214,7 @@ namespace gr {
in += d_header_len * (d_items_per_symbol + d_gi) * d_itemsize;
nread += d_header_len * (d_items_per_symbol + d_gi);
d_state = STATE_PAYLOAD;
+ // Fall through
case STATE_PAYLOAD:
if (check_items_available(d_curr_payload_len, ninput_items, noutput_items, nread)) {
@@ -258,6 +261,7 @@ namespace gr {
}
}
if (tag_index != -1) {
+ remove_item_tag(0, tags[tag_index]);
return min_offset - nitems_read(0);
}
}
@@ -299,7 +303,7 @@ namespace gr {
}
if (d_state == STATE_HEADER_RX_SUCCESS)
{
- if ((d_curr_payload_len * (d_output_symbols ? 1 : d_items_per_symbol)) > max_output_buffer(1)) {
+ if ((d_curr_payload_len * (d_output_symbols ? 1 : d_items_per_symbol)) > max_output_buffer(1)/2) {
d_state = STATE_HEADER_RX_FAIL;
GR_LOG_INFO(d_logger, boost::format("Detected a packet larger than max frame size (%1% symbols)") % d_curr_payload_len);
} else {