Mesh: Fix proxy PDU SAR msg length
In read_pipe function there was a mishandled case when the msg has
more than one segment. As a result e.g. after provisioning the
capabilities discovery was incorrect parsed.
diff --git a/mesh/gatt.c b/mesh/gatt.c
index 9116a9d..693577a 100644
--- a/mesh/gatt.c
+++ b/mesh/gatt.c
@@ -383,7 +383,7 @@
uint8_t buf[512];
uint8_t *res;
int fd = io_get_fd(io);
- ssize_t len;
+ ssize_t len, len_sar;
if (io != notify_io)
return true;
@@ -393,14 +393,14 @@
break;
res = buf;
- mesh_gatt_sar(&res, len);
-
- if (prov)
- prov_data_ready(node, res, len);
- else
- net_data_ready(res, len);
+ len_sar = mesh_gatt_sar(&res, len);
+ if (len_sar) {
+ if (prov)
+ prov_data_ready(node, res, len_sar);
+ else
+ net_data_ready(res, len_sar);
+ }
}
-
return true;
}