diff options
author | Kévin Redon <kredon@sysmocom.de> | 2018-07-10 16:03:27 +0200 |
---|---|---|
committer | Kévin Redon <kredon@sysmocom.de> | 2018-07-11 22:01:58 +0200 |
commit | 3b7624c120ce395f9020d2d965e170c88b81478b (patch) | |
tree | a48af0605611c76ba5e75b9101b6d290f8a35683 | |
parent | f000831d72d47dfd86b96d6494500e78413f4449 (diff) |
host sniff: process remaining usb messages in buffer
Change-Id: I1746c0187b2e5dbef44b4b336fee3bd9ded15079
-rw-r--r-- | host/simtrace2-sniff.c | 9 |
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]; } |