From fd9f2d2804a6ebffbc2365b56d34dcf18aaa9942 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Thu, 13 Oct 2011 14:59:30 +0200 Subject: serial: skip NUL bytes coming before real AT responses Some Cinterion modems send a NUL byte before the "CONNECTED" reply to "ATD" (only during the first ATD try anyway). This fix will ignore any NUL byte leading the real response. --- src/mm-serial-parsers.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mm-serial-parsers.c b/src/mm-serial-parsers.c index f94e1156..85b5380f 100644 --- a/src/mm-serial-parsers.c +++ b/src/mm-serial-parsers.c @@ -265,7 +265,11 @@ mm_serial_parser_v1_parse (gpointer data, g_return_val_if_fail (parser != NULL, FALSE); g_return_val_if_fail (response != NULL, FALSE); - if (G_UNLIKELY (!response->len || !strlen (response->str))) + /* Skip NUL bytes if they are found leading the response */ + while (response->len > 0 && response->str[0] == '\0') + g_string_erase (response, 0, 1); + + if (G_UNLIKELY (!response->len)) return FALSE; /* First, check for successful responses */ -- cgit v1.2.3-70-g09d2