diff --git a/contrib/examples/example_app/lwipopts.h b/contrib/examples/example_app/lwipopts.h index 664027c5..b9149426 100644 --- a/contrib/examples/example_app/lwipopts.h +++ b/contrib/examples/example_app/lwipopts.h @@ -36,6 +36,15 @@ #include "lwipopts_test.h" #else /* LWIP_OPTTEST_FILE */ +//#define LWIP_HAVE_MBEDTLS +#define ALTCP_MBEDTLS_USE_SESSION_TICKETS 1 +#define ALTCP_MBEDTLS_USE_SESSION_CACHE 1 + +/* + * struct lwip_sock *tryget_socket_unconn_nouse(int fd); + */ +#define LWIP_SOCKET_EXTERNAL_ALLOC 0//1 + #define LWIP_IPV4 1 #define LWIP_IPV6 1 @@ -47,7 +56,7 @@ #define LWIP_IGMP LWIP_IPV4 #define LWIP_ICMP LWIP_IPV4 -#define LWIP_SNMP LWIP_UDP +#define LWIP_SNMP 0//LWIP_UDP #define MIB2_STATS LWIP_SNMP #ifdef LWIP_HAVE_MBEDTLS #define LWIP_SNMP_V3 (LWIP_SNMP) diff --git a/src/apps/mdns/mdns.c b/src/apps/mdns/mdns.c index 577a8a29..0260cebf 100644 --- a/src/apps/mdns/mdns.c +++ b/src/apps/mdns/mdns.c @@ -1800,6 +1800,8 @@ mdns_handle_response(struct mdns_packet *pkt, struct netif *netif) req = mdns_lookup_request(&ans.info); } if (req && req->result_fn) { + u16_t offset; + struct pbuf *p; int flags = (first ? MDNS_SEARCH_RESULT_FIRST : 0) | (!total_answers_left ? MDNS_SEARCH_RESULT_LAST : 0); if (req->only_ptr) { @@ -1807,10 +1809,8 @@ mdns_handle_response(struct mdns_packet *pkt, struct netif *netif) continue; /* Ignore non matching answer type */ flags = MDNS_SEARCH_RESULT_FIRST | MDNS_SEARCH_RESULT_LAST; } - u16_t offset; - struct pbuf *p = pbuf_skip(pkt->pbuf, ans.rd_offset, &offset); - if (ans.info.type == DNS_RRTYPE_PTR || ans.info.type == DNS_RRTYPE_SRV) - { + p = pbuf_skip(pkt->pbuf, ans.rd_offset, &offset); + if (ans.info.type == DNS_RRTYPE_PTR || ans.info.type == DNS_RRTYPE_SRV) { /* Those RR types have compressed domain name. Must uncompress here, since cannot be done without pbuf. */ struct { @@ -1825,21 +1825,16 @@ mdns_handle_response(struct mdns_packet *pkt, struct netif *netif) memcpy(&data.dom, (const char *)p->payload + offset + off, data.dom.length); } /* Adjust len/off according RR type */ - if (ans.info.type == DNS_RRTYPE_SRV) - { + if (ans.info.type == DNS_RRTYPE_SRV) { memcpy(&data, (const char *)p->payload + offset, 6); len = data.dom.length + 6; off = 0; - } - else - { + } else { len = data.dom.length; off = 6; } req->result_fn(&ans, (const char *)&data + off, len, flags, req->arg); - } - else - { + } else { /* Direct call result_fn with varpart pointing in pbuf payload */ req->result_fn(&ans, (const char *)p->payload + offset, ans.rd_length, flags, req->arg); } @@ -2513,10 +2508,12 @@ mdns_resp_add_service_txtitem(struct mdns_service *service, const char *txt, u8_ void mdns_search_stop(s8_t request_id) { + struct mdns_request *req; LWIP_ASSERT("mdns_search_stop: bad request_id", (request_id >= 0) && (request_id < MDNS_MAX_REQUESTS)); - struct mdns_request *req = &mdns_requests[request_id]; - if (req && req->result_fn) + req = &mdns_requests[request_id]; + if (req && req->result_fn) { req->result_fn = NULL; + } } /** @@ -2538,11 +2535,11 @@ mdns_search_service(const char *name, const char *service, enum mdns_sd_proto pr struct netif *netif, search_result_fn_t result_fn, void *arg, s8_t *request_id) { - int i; - s8_t slot = -1; + s8_t i, slot = -1; struct mdns_request *req; - if (name) + if (name) { LWIP_ERROR("mdns_search_service: Name too long", (strlen(name) <= MDNS_LABEL_MAXLEN), return ERR_VAL); + } LWIP_ERROR("mdns_search_service: Service too long", (strlen(service) < MDNS_DOMAIN_MAXLEN), return ERR_VAL); LWIP_ERROR("mdns_search_service: Bad reqid pointer", request_id, return ERR_VAL); LWIP_ERROR("mdns_search_service: Bad proto (need TCP or UDP)", (proto == DNSSD_PROTO_TCP || proto == DNSSD_PROTO_UDP), return ERR_VAL); @@ -2552,9 +2549,10 @@ mdns_search_service(const char *name, const char *service, enum mdns_sd_proto pr break; } } - if (slot < 0) + if (slot < 0) { /* Don't assert if no more space in mdns_request table. Just return an error. */ return ERR_MEM; + } req = &mdns_requests[slot]; memset(req, 0, sizeof(struct mdns_request)); @@ -2562,11 +2560,13 @@ mdns_search_service(const char *name, const char *service, enum mdns_sd_proto pr req->arg = arg; req->proto = (u16_t)proto; req->qtype = DNS_RRTYPE_PTR; - if (proto == DNSSD_PROTO_UDP && strcmp(service, "_services._dns-sd") == 0) + if (proto == DNSSD_PROTO_UDP && strcmp(service, "_services._dns-sd") == 0) { req->only_ptr = 1; /* don't check other answers */ + } mdns_domain_add_string(&req->service, service); - if (name) + if (name) { MEMCPY(&req->name, name, LWIP_MIN(MDNS_LABEL_MAXLEN, strlen(name))); + } /* save request id (slot) in pointer provided by caller */ *request_id = slot; /* now prepare a MDNS request and send it (on specified interface) */ diff --git a/src/apps/mdns/mdns_domain.c b/src/apps/mdns/mdns_domain.c index 1893c739..f35800cf 100644 --- a/src/apps/mdns/mdns_domain.c +++ b/src/apps/mdns/mdns_domain.c @@ -145,7 +145,7 @@ mdns_domain_add_label_pbuf(struct mdns_domain *domain, const struct pbuf *p, u16 err_t mdns_domain_add_domain(struct mdns_domain *domain, struct mdns_domain *source) { - u8_t len = source->length; + u16_t len = source->length; if (len > 0 && (1 + len + domain->length >= MDNS_DOMAIN_MAXLEN)) { return ERR_VAL; } @@ -157,10 +157,9 @@ mdns_domain_add_domain(struct mdns_domain *domain, struct mdns_domain *source) /* Copy partial domain */ MEMCPY(&domain->name[domain->length], source->name, len); domain->length += len; - } - else { + } else { /* Add zero marker */ - domain->name[domain->length] = len; + domain->name[domain->length] = 0; domain->length++; } return ERR_OK; @@ -184,15 +183,15 @@ mdns_domain_add_string(struct mdns_domain *domain, const char *source) len = start++; *len = 0; source++; - } - else { + } else { *start++ = *source++; *len = *len + 1; } } - if (start == end) + if (start == end) { return ERR_VAL; - domain->length = start - &domain->name[0]; + } + domain->length = (u16_t)(start - &domain->name[0]); return ERR_OK; } diff --git a/src/include/lwip/apps/mdns.h b/src/include/lwip/apps/mdns.h index a4f52c1a..2666875c 100644 --- a/src/include/lwip/apps/mdns.h +++ b/src/include/lwip/apps/mdns.h @@ -62,8 +62,7 @@ enum mdns_sd_proto { struct mdns_host; struct mdns_service; -/* Domain structs - also visible for unit tests */ - +/* Domain structs */ struct mdns_domain { /* Encoded domain name */ u8_t name[MDNS_DOMAIN_MAXLEN];