Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
Nodemcu Firmware
Commits
125db659
Commit
125db659
authored
Jul 31, 2015
by
Johny Mattsson
Browse files
Use dynamic memory for DNS table names, saving ~1k RAM.
parent
4a47813e
Changes
1
Hide whitespace changes
Inline
Side-by-side
app/lwip/core/dns.c
View file @
125db659
...
@@ -173,7 +173,7 @@ struct dns_table_entry {
...
@@ -173,7 +173,7 @@ struct dns_table_entry {
u8_t
seqno
;
u8_t
seqno
;
u8_t
err
;
u8_t
err
;
u32_t
ttl
;
u32_t
ttl
;
char
name
[
DNS_MAX_NAME_LENGTH
]
;
char
*
name
;
ip_addr_t
ipaddr
;
ip_addr_t
ipaddr
;
/* pointer to callback on DNS query done */
/* pointer to callback on DNS query done */
dns_found_callback
found
;
dns_found_callback
found
;
...
@@ -673,6 +673,8 @@ dns_check_entry(u8_t i)
...
@@ -673,6 +673,8 @@ dns_check_entry(u8_t i)
if
(
pEntry
->
found
)
if
(
pEntry
->
found
)
(
*
pEntry
->
found
)(
pEntry
->
name
,
NULL
,
pEntry
->
arg
);
(
*
pEntry
->
found
)(
pEntry
->
name
,
NULL
,
pEntry
->
arg
);
/* flush this entry */
/* flush this entry */
mem_free
(
pEntry
->
name
);
pEntry
->
name
=
NULL
;
pEntry
->
state
=
DNS_STATE_UNUSED
;
pEntry
->
state
=
DNS_STATE_UNUSED
;
pEntry
->
found
=
NULL
;
pEntry
->
found
=
NULL
;
break
;
break
;
...
@@ -697,6 +699,8 @@ dns_check_entry(u8_t i)
...
@@ -697,6 +699,8 @@ dns_check_entry(u8_t i)
if
(
--
pEntry
->
ttl
==
0
)
{
if
(
--
pEntry
->
ttl
==
0
)
{
LWIP_DEBUGF
(
DNS_DEBUG
,
(
"dns_check_entry:
\"
%s
\"
: flush
\n
"
,
pEntry
->
name
));
LWIP_DEBUGF
(
DNS_DEBUG
,
(
"dns_check_entry:
\"
%s
\"
: flush
\n
"
,
pEntry
->
name
));
/* flush this entry */
/* flush this entry */
mem_free
(
pEntry
->
name
);
pEntry
->
name
=
NULL
;
pEntry
->
state
=
DNS_STATE_UNUSED
;
pEntry
->
state
=
DNS_STATE_UNUSED
;
pEntry
->
found
=
NULL
;
pEntry
->
found
=
NULL
;
}
}
...
@@ -839,6 +843,8 @@ responseerr:
...
@@ -839,6 +843,8 @@ responseerr:
(
*
pEntry
->
found
)(
pEntry
->
name
,
NULL
,
pEntry
->
arg
);
(
*
pEntry
->
found
)(
pEntry
->
name
,
NULL
,
pEntry
->
arg
);
}
}
/* flush this entry */
/* flush this entry */
mem_free
(
pEntry
->
name
);
pEntry
->
name
=
NULL
;
pEntry
->
state
=
DNS_STATE_UNUSED
;
pEntry
->
state
=
DNS_STATE_UNUSED
;
pEntry
->
found
=
NULL
;
pEntry
->
found
=
NULL
;
...
@@ -898,11 +904,16 @@ dns_enqueue(const char *name, dns_found_callback found, void *callback_arg)
...
@@ -898,11 +904,16 @@ dns_enqueue(const char *name, dns_found_callback found, void *callback_arg)
LWIP_DEBUGF
(
DNS_DEBUG
,
(
"dns_enqueue:
\"
%s
\"
: use DNS entry %"
U16_F
"
\n
"
,
name
,
(
u16_t
)(
i
)));
LWIP_DEBUGF
(
DNS_DEBUG
,
(
"dns_enqueue:
\"
%s
\"
: use DNS entry %"
U16_F
"
\n
"
,
name
,
(
u16_t
)(
i
)));
/* fill the entry */
/* fill the entry */
namelen
=
LWIP_MIN
(
strlen
(
name
),
DNS_MAX_NAME_LENGTH
-
1
);
char
*
namebuf
=
(
char
*
)
mem_zalloc
(
namelen
);
if
(
!
namebuf
)
return
ERR_MEM
;
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
=
callback_arg
;
pEntry
->
arg
=
callback_arg
;
namelen
=
LWIP_MIN
(
strlen
(
name
),
DNS_MAX_NAME_LENGTH
-
1
);
mem_free
(
pEntry
->
name
);
pEntry
->
name
=
namebuf
;
MEMCPY
(
pEntry
->
name
,
name
,
namelen
);
MEMCPY
(
pEntry
->
name
,
name
,
namelen
);
pEntry
->
name
[
namelen
]
=
0
;
pEntry
->
name
[
namelen
]
=
0
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment