if (search_result) {
mdns_txt_item_t * txt = NULL;
size_t txt_count = 0;
- _mdns_result_txt_create(data_ptr, data_len, &txt, &txt_count);
- if (!txt_count) {
- continue;
- }
mdns_result_t * result = NULL;
if (search_result->type == MDNS_TYPE_PTR) {
}
}
if (!result->txt) {
- result->txt = txt;
- result->txt_count = txt_count;
+ _mdns_result_txt_create(data_ptr, data_len, &txt, &txt_count);
+ if (txt_count) {
+ result->txt = txt;
+ result->txt_count = txt_count;
+ }
}
} else {
_mdns_search_result_add_txt(search_result, txt, txt_count, packet->tcpip_if, packet->ip_protocol);
while (r) {
if (r->tcpip_if == tcpip_if && r->ip_protocol == ip_protocol) {
if (r->txt) {
- return;
+ goto free_txt;
}
r->txt = txt;
r->txt_count = txt_count;
if (!search->max_results || search->num_results < search->max_results) {
r = (mdns_result_t *)malloc(sizeof(mdns_result_t));
if (!r) {
- for (i=0; i<txt_count; i++) {
- free((char *)(txt[i].key));
- free((char *)(txt[i].value));
- }
- free(txt);
- return;
+ goto free_txt;
}
memset(r, 0 , sizeof(mdns_result_t));
search->result = r;
search->num_results++;
}
+ return;
+
+free_txt:
+ for (i=0; i<txt_count; i++) {
+ free((char *)(txt[i].key));
+ free((char *)(txt[i].value));
+ }
+ free(txt);
}
/**