30 # ifdef HAVE_STRINGS_H
44 #define SPF_LAME_EXP "SPF failure: no explanation available"
47 SPF_server_get_default_explanation(SPF_server_t *spf_server,
48 SPF_request_t *spf_request,
49 SPF_response_t *spf_response,
50 char **bufp,
size_t *buflenp)
53 SPF_macro_t *spf_macro;
55 spf_macro = spf_server->explanation;
56 if (spf_macro !=
NULL) {
58 spf_request, spf_response,
59 SPF_macro_data(spf_macro), spf_macro->macro_len,
66 char *tmp = realloc(*bufp, len);
77 #define RETURN_DEFAULT_EXP() do { \
78 return SPF_server_get_default_explanation(spf_server, \
79 spf_request, spf_response, bufp, buflenp); \
84 SPF_request_t *spf_request,
85 SPF_response_t *spf_response,
86 SPF_record_t *spf_record,
87 char **bufp,
size_t *buflenp)
89 SPF_macro_t *spf_macro;
90 SPF_dns_server_t *resolver;
108 domain = spf_request->cur_dom;
110 if ( domain ==
NULL )
112 "Could not identify current domain for explanation");
119 spf_response, spf_record,
130 spf_response, spf_record,
131 "exp", bufp, buflenp );
139 if (*bufp ==
NULL || (*bufp)[0] ==
'\0') {
144 "Explanation is blank!");
153 resolver = spf_server->resolver;
155 if (resolver->get_exp)
156 return resolver->get_exp(spf_server, *bufp, bufp, buflenp);
159 if (rr_txt ==
NULL) {
186 if (rr_txt->
num_rr == 0) {
188 "No TXT records returned from DNS lookup");
211 spf_request, spf_response,
212 SPF_macro_data(spf_macro), spf_macro->macro_len,