- blobmsg_for_each_attr(txt, _tb[SERVICE_TXT], rem2) {
- int len = strlen(blobmsg_get_string(txt));
- if (!len)
- continue;
- if (len > 0xff)
- len = 0xff;
- *d_txt = len;
- d_txt++;
- memcpy(d_txt, blobmsg_get_string(txt), len);
- d_txt += len;
+ blobmsg_for_each_attr(cur3, cur2, rem3) {
+ struct blob_attr *cur4;
+ int rem4;
+ int running = 0;
+
+ blobmsg_for_each_attr(cur4, cur3, rem4) {
+ const char *name = blobmsg_name(cur4);
+
+ if (!strcmp(name, "running")) {
+ running = blobmsg_get_bool(cur4);
+ } else if (running && !strcmp(name, "data")) {
+ struct blob_attr *cur5;
+ int rem5;
+
+ blobmsg_for_each_attr(cur5, cur4, rem5) {
+ struct blob_attr *cur6;
+ int rem6;
+
+ if (strcmp(blobmsg_name(cur5), "mdns"))
+ continue;
+
+ blobmsg_for_each_attr(cur6, cur5, rem6)
+ service_load_blob(cur6);
+ }
+ break;
+ }
+ }