summaryrefslogtreecommitdiff
path: root/packet.c
diff options
context:
space:
mode:
Diffstat (limited to 'packet.c')
-rw-r--r--packet.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/packet.c b/packet.c
index 3714fc0e..8a94d57c 100644
--- a/packet.c
+++ b/packet.c
@@ -1425,11 +1425,16 @@ ssize_t packet_get(int fd, struct gps_packet_t *lexer)
/* Otherwise, consume from the packet input buffer */
packet_parse(lexer);
- /*
- * recvd can still be 0 or -1 at this point even if buffer data
- * was consumed. It could be -1 on a transient read error.
- */
- return recvd;
+ /* If we gathered a packet, return its length */
+ if (lexer->outbuflen > 0)
+ return lexer->outbuflen;
+ else
+ /*
+ * Otherwise recvd is the size of whatever packet fragment we got.
+ * It can still be 0 or -1 at this point even if buffer data
+ * was consumed.
+ */
+ return recvd;
}
void packet_reset(struct gps_packet_t *lexer)