aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKévin Redon <kredon@sysmocom.de>2018-07-10 16:03:27 +0200
committerKévin Redon <kredon@sysmocom.de>2018-07-11 22:01:58 +0200
commit3b7624c120ce395f9020d2d965e170c88b81478b (patch)
treea48af0605611c76ba5e75b9101b6d290f8a35683
parentf000831d72d47dfd86b96d6494500e78413f4449 (diff)
host sniff: process remaining usb messages in buffer
-rw-r--r--host/simtrace2-sniff.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/host/simtrace2-sniff.c b/host/simtrace2-sniff.c
index eb547b0..d5fe48a 100644
--- a/host/simtrace2-sniff.c
+++ b/host/simtrace2-sniff.c
@@ -276,12 +276,15 @@ static void run_mainloop()
if (xfer_len > 0) {
//printf("URB: %s\n", osmo_hexdump(&buf[buf_i], xfer_len));
buf_i += xfer_len;
- if (buf_i>=sizeof(buf)) {
+ if (buf_i >= sizeof(buf)) {
perror("preventing USB buffer overflow");
return;
}
- int processed = process_usb_msg(buf, buf_i);
- if (processed > 0 && processed <= buf_i) {
+ int processed;
+ while ((processed = process_usb_msg(buf, buf_i)) > 0) {
+ if (processed > buf_i) {
+ break;
+ }
for (i = processed; i < buf_i; i++) {
buf[i-processed] = buf[i];
}