git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Don't open spool data-files which are symlinks
[exim.git]
/
src
/
src
/
dns.c
diff --git
a/src/src/dns.c
b/src/src/dns.c
index e29f86c4828378d00d7ca70c1578ae1ece41b959..83de7c26684ea3a6ad640089899c59e986dcb453 100644
(file)
--- a/
src/src/dns.c
+++ b/
src/src/dns.c
@@
-2,7
+2,7
@@
* Exim - an Internet mail transport agent *
*************************************************/
* Exim - an Internet mail transport agent *
*************************************************/
-/* Copyright (c) University of Cambridge 1995 - 201
7
*/
+/* Copyright (c) University of Cambridge 1995 - 201
8
*/
/* See the file NOTICE for conditions of use and distribution. */
/* Functions for interfacing with the DNS. */
/* See the file NOTICE for conditions of use and distribution. */
/* Functions for interfacing with the DNS. */
@@
-271,10
+271,7
@@
else
{
int j;
for (j = 0; j < 32; j += 4)
{
int j;
for (j = 0; j < 32; j += 4)
- {
- sprintf(CS pp, "%x.", (v6[i] >> j) & 15);
- pp += 2;
- }
+ pp += sprintf(CS pp, "%x.", (v6[i] >> j) & 15);
}
Ustrcpy(pp, "ip6.arpa.");
}
Ustrcpy(pp, "ip6.arpa.");
@@
-599,6
+596,15
@@
switch(t)
* Cache a failed DNS lookup result *
*************************************************/
* Cache a failed DNS lookup result *
*************************************************/
+static void
+dns_fail_tag(uschar * buf, const uschar * name, int dns_type)
+{
+res_state resp = os_get_dns_resolver_res();
+sprintf(CS buf, "%.255s-%s-%lx", name, dns_text_type(dns_type),
+ (unsigned long) resp->options);
+}
+
+
/* We cache failed lookup results so as not to experience timeouts many
times for the same domain. We need to retain the resolver options because they
may change. For successful lookups, we rely on resolver and/or name server
/* We cache failed lookup results so as not to experience timeouts many
times for the same domain. We need to retain the resolver options because they
may change. For successful lookups, we rely on resolver and/or name server
@@
-615,10
+621,8
@@
Returns: the return code
static int
dns_return(const uschar * name, int type, int rc)
{
static int
dns_return(const uschar * name, int type, int rc)
{
-res_state resp = os_get_dns_resolver_res();
tree_node *node = store_get_perm(sizeof(tree_node) + 290);
tree_node *node = store_get_perm(sizeof(tree_node) + 290);
-sprintf(CS node->name, "%.255s-%s-%lx", name, dns_text_type(type),
- (unsigned long) resp->options);
+dns_fail_tag(node->name, name, type);
node->data.val = rc;
(void)tree_insertnode(&tree_dns_fails, node);
return rc;
node->data.val = rc;
(void)tree_insertnode(&tree_dns_fails, node);
return rc;
@@
-656,7
+660,6
@@
dns_basic_lookup(dns_answer *dnsa, const uschar *name, int type)
int rc = -1;
const uschar *save_domain;
#endif
int rc = -1;
const uschar *save_domain;
#endif
-res_state resp = os_get_dns_resolver_res();
tree_node *previous;
uschar node_name[290];
tree_node *previous;
uschar node_name[290];
@@
-666,8
+669,7
@@
a timeout on one domain doesn't happen time and time again for messages that
have many addresses in the same domain. We rely on the resolver and name server
caching for successful lookups. */
have many addresses in the same domain. We rely on the resolver and name server
caching for successful lookups. */
-sprintf(CS node_name, "%.255s-%s-%lx", name, dns_text_type(type),
- (unsigned long) resp->options);
+dns_fail_tag(node_name, name, type);
if ((previous = tree_search(tree_dns_fails, node_name)))
{
DEBUG(D_dns) debug_printf("DNS lookup of %.255s-%s: using cached value %s\n",
if ((previous = tree_search(tree_dns_fails, node_name)))
{
DEBUG(D_dns) debug_printf("DNS lookup of %.255s-%s: using cached value %s\n",
@@
-1019,7
+1021,7
@@
switch (type)
assertion field. */
case T_CSA:
{
assertion field. */
case T_CSA:
{
- uschar *srvname, *namesuff, *tld
, *p
;
+ uschar *srvname, *namesuff, *tld;
int priority, weight, port;
int limit, rc, i;
BOOL ipv6;
int priority, weight, port;
int limit, rc, i;
BOOL ipv6;