From: Miek Gieben Date: Wed, 10 Aug 2005 12:15:53 +0000 (+0000) Subject: move port info to socket creation time. Removed more dead(?) code X-Git-Tag: release-1.0.0~323 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d960f1ae52b15f6fa088918632d4b18792b22301;p=thirdparty%2Fldns.git move port info to socket creation time. Removed more dead(?) code --- diff --git a/ldns/rdata.h b/ldns/rdata.h index 94749aee..10451cac 100644 --- a/ldns/rdata.h +++ b/ldns/rdata.h @@ -283,10 +283,11 @@ uint32_t ldns_str2period(const char *nptr, const char **endptr); /** * returns the native sockaddr representation from the rdf. * \param[in] rd the ldns_rdf to operate on + * \param[in] port what port to use. 0 means; use default (53) * \return struct sockaddr* the address in the format so other * functions can use it (sendto) */ -struct sockaddr_storage * ldns_rdf2native_sockaddr_storage(ldns_rdf *rd); +struct sockaddr_storage * ldns_rdf2native_sockaddr_storage(ldns_rdf *rd, uint16_t port); /* misc */ /** diff --git a/net.c b/net.c index f1f7f7b9..44347b74 100644 --- a/net.c +++ b/net.c @@ -85,7 +85,8 @@ ldns_send(ldns_pkt **result, ldns_resolver *r, ldns_pkt *query_pkt) /* loop through all defined nameservers */ for (i = 0; i < ldns_resolver_nameserver_count(r); i++) { - ns = ldns_rdf2native_sockaddr_storage(ns_rand_array[i]); + ns = ldns_rdf2native_sockaddr_storage(ns_rand_array[i], + ldns_resolver_port(r)); if ((ns->ss_family == AF_INET && ldns_resolver_ip6(r) == LDNS_RESOLV_INET6) diff --git a/rdata.c b/rdata.c index 080ac224..3714ee12 100644 --- a/rdata.c +++ b/rdata.c @@ -115,7 +115,7 @@ ldns_rdf2native_int32(ldns_rdf *rd) } struct sockaddr_storage * -ldns_rdf2native_sockaddr_storage(ldns_rdf *rd) +ldns_rdf2native_sockaddr_storage(ldns_rdf *rd, uint16_t port) { struct sockaddr_storage *data; struct sockaddr_in *data_in; @@ -129,17 +129,21 @@ ldns_rdf2native_sockaddr_storage(ldns_rdf *rd) return NULL; } + if (port == 0) { + port = LDNS_PORT; + } + switch(ldns_rdf_get_type(rd)) { case LDNS_RDF_TYPE_A: data->ss_family = AF_INET; data_in = (struct sockaddr_in*) data; - data_in->sin_port = htons(LDNS_PORT); + data_in->sin_port = htons(port); memcpy(&(data_in->sin_addr), ldns_rdf_data(rd), ldns_rdf_size(rd)); return data; case LDNS_RDF_TYPE_AAAA: data->ss_family = AF_INET6; data_in6 = (struct sockaddr_in6*) data; - data_in6->sin6_port = htons(LDNS_PORT); + data_in6->sin6_port = htons(port); memcpy(&data_in6->sin6_addr, ldns_rdf_data(rd), ldns_rdf_size(rd)); return data; diff --git a/resolver.c b/resolver.c index 105f9dc6..8a7bb0af 100644 --- a/resolver.c +++ b/resolver.c @@ -792,8 +792,6 @@ ldns_axfr_start(ldns_resolver *resolver, ldns_buffer *query_wire; struct sockaddr_storage *ns; - struct sockaddr_in *ns4; - struct sockaddr_in6 *ns6; socklen_t ns_len = 0; ldns_status status; @@ -812,21 +810,16 @@ ldns_axfr_start(ldns_resolver *resolver, return LDNS_STATUS_ADDRESS_ERR; } /* For AXFR, we have to make the connection ourselves */ - ns = ldns_rdf2native_sockaddr_storage(resolver->_nameservers[0]); + ns = ldns_rdf2native_sockaddr_storage(resolver->_nameservers[0], + ldns_resolver_port(resolver)); /* Determine the address size. */ switch(ns->ss_family) { case AF_INET: - ns4 = (struct sockaddr_in*) ns; - ns4->sin_port = htons( - ldns_resolver_port(resolver)); ns_len = (socklen_t)sizeof(struct sockaddr_in); break; case AF_INET6: - ns6 = (struct sockaddr_in6*) ns; - ns6->sin6_port = htons( - ldns_resolver_port(resolver)); ns_len = (socklen_t)sizeof(struct sockaddr_in6); break; default: