mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-10-01 04:12:07 +00:00
Minor changes in DNS client.
This commit is contained in:
parent
e7483f2e64
commit
c31b405af6
@ -290,7 +290,7 @@ dns_getserver(u8_t numdns)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* The DNS resolver client timer - handle retries and timeouts and should
|
* The DNS resolver client timer - handle retries and timeouts and should
|
||||||
* be called every DNS_TMR_INTERVAL miliseconds (every second by default).
|
* be called every DNS_TMR_INTERVAL milliseconds (every second by default).
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
dns_tmr(void)
|
dns_tmr(void)
|
||||||
@ -677,18 +677,15 @@ dns_recv(void *s, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr, u16
|
|||||||
--nanswers;
|
--nanswers;
|
||||||
}
|
}
|
||||||
LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: \"%s\": error in response\n", pEntry->name));
|
LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: \"%s\": error in response\n", pEntry->name));
|
||||||
|
/* call callback to indicate error, clean up memory and return */
|
||||||
|
goto responseerr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
memerr2:
|
|
||||||
#if (DNS_USES_STATIC_BUF == 2)
|
/* deallocate memory and return */
|
||||||
/* free dns buffer */
|
goto memerr2;
|
||||||
mem_free(dns_payload);
|
|
||||||
#endif /* (DNS_USES_STATIC_BUF == 2) */
|
|
||||||
memerr1:
|
|
||||||
/* free pbuf */
|
|
||||||
pbuf_free(p);
|
|
||||||
return;
|
|
||||||
responseerr:
|
responseerr:
|
||||||
/* ERROR: call specified callback function with NULL as name to indicate an error */
|
/* ERROR: call specified callback function with NULL as name to indicate an error */
|
||||||
if (pEntry->found) {
|
if (pEntry->found) {
|
||||||
@ -697,8 +694,17 @@ responseerr:
|
|||||||
/* flush this entry */
|
/* flush this entry */
|
||||||
pEntry->state = DNS_STATE_UNUSED;
|
pEntry->state = DNS_STATE_UNUSED;
|
||||||
pEntry->found = NULL;
|
pEntry->found = NULL;
|
||||||
/* deallocate memory and return */
|
|
||||||
goto memerr2;
|
memerr2:
|
||||||
|
#if (DNS_USES_STATIC_BUF == 2)
|
||||||
|
/* free dns buffer */
|
||||||
|
mem_free(dns_payload);
|
||||||
|
#endif /* (DNS_USES_STATIC_BUF == 2) */
|
||||||
|
|
||||||
|
memerr1:
|
||||||
|
/* free pbuf */
|
||||||
|
pbuf_free(p);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -706,11 +712,11 @@ responseerr:
|
|||||||
*
|
*
|
||||||
* @param name the hostname that is to be queried
|
* @param name the hostname that is to be queried
|
||||||
* @param found a callback founction to be called on success, failure or timeout
|
* @param found a callback founction to be called on success, failure or timeout
|
||||||
* @param arg argument to pass to the callback function
|
* @param callback_arg argument to pass to the callback function
|
||||||
* @return a DNS_RESULT (@see DNS_RESULT, @see enum dns_result)
|
* @return a DNS_RESULT (@see DNS_RESULT, @see enum dns_result)
|
||||||
*/
|
*/
|
||||||
static DNS_RESULT
|
static DNS_RESULT
|
||||||
dns_enqueue(const char *name, void (*found)(const char *name, struct ip_addr *addr, void *arg), void *arg)
|
dns_enqueue(const char *name, dns_found_callback found, void *callback_arg)
|
||||||
{
|
{
|
||||||
u8_t i;
|
u8_t i;
|
||||||
u8_t lseq, lseqi;
|
u8_t lseq, lseqi;
|
||||||
@ -753,7 +759,7 @@ dns_enqueue(const char *name, void (*found)(const char *name, struct ip_addr *ad
|
|||||||
pEntry->state = DNS_STATE_NEW;
|
pEntry->state = DNS_STATE_NEW;
|
||||||
pEntry->seqno = dns_seqno++;
|
pEntry->seqno = dns_seqno++;
|
||||||
pEntry->found = found;
|
pEntry->found = found;
|
||||||
pEntry->arg = arg;
|
pEntry->arg = callback_arg;
|
||||||
strcpy(pEntry->name, name);
|
strcpy(pEntry->name, name);
|
||||||
|
|
||||||
/* force to send query without waiting timer */
|
/* force to send query without waiting timer */
|
||||||
@ -778,15 +784,16 @@ dns_enqueue(const char *name, void (*found)(const char *name, struct ip_addr *ad
|
|||||||
* cached in the dns_table (only valid if DNS_COMPLETE is returned!)
|
* cached in the dns_table (only valid if DNS_COMPLETE is returned!)
|
||||||
* @param found a callback founction to be called on success, failure or timeout (only if
|
* @param found a callback founction to be called on success, failure or timeout (only if
|
||||||
* DNS_QUERY_QUEUED is returned!)
|
* DNS_QUERY_QUEUED is returned!)
|
||||||
* @param arg argument to pass to the callback function
|
* @param callback_arg argument to pass to the callback function
|
||||||
* @return a DNS_RESULT (@see DNS_RESULT, @see enum dns_result)
|
* @return a DNS_RESULT (@see DNS_RESULT, @see enum dns_result)
|
||||||
*/
|
*/
|
||||||
DNS_RESULT dns_gethostbyname(const char *hostname, struct ip_addr *addr, dns_found_callback found,
|
DNS_RESULT dns_gethostbyname(const char *hostname, struct ip_addr *addr, dns_found_callback found,
|
||||||
void *callback_arg)
|
void *callback_arg)
|
||||||
{
|
{
|
||||||
/* not initialized or no valid server yet, or invalid addr pointer
|
/* not initialized or no valid server yet, or invalid addr pointer
|
||||||
* or invalid hostname or invalid hostname length */
|
* or invalid hostname or invalid hostname length */
|
||||||
if ((dns_pcb == NULL) || (addr == NULL) || (!hostname) || (!hostname[0]) ||
|
if ((dns_pcb == NULL) || (addr == NULL) ||
|
||||||
|
(!hostname) || (!hostname[0]) ||
|
||||||
(strlen(hostname) >= DNS_MAX_NAME_LENGTH)) {
|
(strlen(hostname) >= DNS_MAX_NAME_LENGTH)) {
|
||||||
return DNS_QUERY_INVALID;
|
return DNS_QUERY_INVALID;
|
||||||
}
|
}
|
||||||
|
@ -99,15 +99,20 @@ typedef enum dns_result {
|
|||||||
* @param name pointer to the name that was looked up.
|
* @param name pointer to the name that was looked up.
|
||||||
* @param ipaddr pointer to a struct ip_addr containing the IP address of the hostname,
|
* @param ipaddr pointer to a struct ip_addr containing the IP address of the hostname,
|
||||||
* or NULL if the name could not be found (or on any other error).
|
* or NULL if the name could not be found (or on any other error).
|
||||||
* @param a user-specified callback argument passed to dns_gethostbyname
|
* @param callback_arg a user-specified callback argument passed to dns_gethostbyname
|
||||||
*/
|
*/
|
||||||
typedef void (*dns_found_callback)(const char *name, struct ip_addr *ipaddr, void *arg);
|
typedef void (*dns_found_callback)(const char *name, struct ip_addr *ipaddr, void *callback_arg);
|
||||||
|
|
||||||
|
|
||||||
|
void dns_init(void);
|
||||||
|
|
||||||
|
void dns_tmr(void);
|
||||||
|
|
||||||
|
void dns_setserver(u8_t numdns, struct ip_addr *dnsserver);
|
||||||
|
|
||||||
void dns_init(void);
|
|
||||||
void dns_tmr(void);
|
|
||||||
void dns_setserver(u8_t numdns, struct ip_addr *dnsserver);
|
|
||||||
struct ip_addr dns_getserver(u8_t numdns);
|
struct ip_addr dns_getserver(u8_t numdns);
|
||||||
DNS_RESULT dns_gethostbyname(const char *hostname, struct ip_addr *addr,
|
|
||||||
|
DNS_RESULT dns_gethostbyname(const char *hostname, struct ip_addr *addr,
|
||||||
dns_found_callback found, void *callback_arg);
|
dns_found_callback found, void *callback_arg);
|
||||||
|
|
||||||
#endif /* LWIP_DNS */
|
#endif /* LWIP_DNS */
|
||||||
|
Loading…
Reference in New Issue
Block a user