static int pico_dns_client_send(struct pico_dns_query *q) { uint16_t *paramID = PICO_ZALLOC(sizeof(uint16_t)); if (!paramID) { pico_err = PICO_ERR_ENOMEM; return -1; } dns_dbg("DNS: sending query to %08X\n", q->q_ns.ns.addr); if (!q->s) goto failure; if (pico_socket_connect(q->s, &q->q_ns.ns, short_be(PICO_DNS_NS_PORT)) < 0) goto failure; pico_socket_send(q->s, q->query, q->len); *paramID = q->id; pico_timer_add(PICO_DNS_CLIENT_RETRANS, pico_dns_client_retransmission, paramID); return 0; failure: PICO_FREE(paramID); return -1; }
static int pico_dns_client_send(struct pico_dns_key *key) { struct pico_socket *s; int w = 0; dns_dbg("DNS: sending query to %08X\n", key->q_ns.ns.addr); s = pico_socket_open(PICO_PROTO_IPV4, PICO_PROTO_UDP, &pico_dns_client_callback); if (!s) return -1; key->s = s; if (pico_socket_connect(s, &key->q_ns.ns, short_be(PICO_DNS_NS_PORT)) != 0) return -1; w = pico_socket_send(s, key->q_hdr, key->len); if (w <= 0) return -1; return 0; }