diff options
Diffstat (limited to 'Swiften/Network/UnboundDomainNameResolver.cpp')
| -rwxr-xr-x | Swiften/Network/UnboundDomainNameResolver.cpp | 18 | 
1 files changed, 12 insertions, 6 deletions
| diff --git a/Swiften/Network/UnboundDomainNameResolver.cpp b/Swiften/Network/UnboundDomainNameResolver.cpp index d986385..bc280eb 100755 --- a/Swiften/Network/UnboundDomainNameResolver.cpp +++ b/Swiften/Network/UnboundDomainNameResolver.cpp @@ -15,4 +15,5 @@  #include <Swiften/Base/Log.h>  #include <Swiften/EventLoop/EventLoop.h> +#include <Swiften/IDN/IDNConverter.h>  #include <Swiften/Network/DomainNameAddressQuery.h>  #include <Swiften/Network/DomainNameResolveError.h> @@ -174,5 +175,5 @@ class UnboundDomainNameAddressQuery : public DomainNameAddressQuery, public Unbo  }; -UnboundDomainNameResolver::UnboundDomainNameResolver(boost::shared_ptr<boost::asio::io_service> ioService, EventLoop* eventLoop) : ioService(ioService), ubDescriptior(*ioService), eventLoop(eventLoop) { +UnboundDomainNameResolver::UnboundDomainNameResolver(IDNConverter* idnConverter, boost::shared_ptr<boost::asio::io_service> ioService, EventLoop* eventLoop) : idnConverter(idnConverter), ioService(ioService), ubDescriptior(*ioService), eventLoop(eventLoop) {  	ubContext = ub_ctx_create();  	if(!ubContext) { @@ -187,9 +188,9 @@ UnboundDomainNameResolver::UnboundDomainNameResolver(boost::shared_ptr<boost::as  	/* read /etc/resolv.conf for DNS proxy settings (from DHCP) */  	if( (ret=ub_ctx_resolvconf(ubContext, const_cast<char*>("/etc/resolv.conf"))) != 0) { -		SWIFT_LOG(debug) << "error reading resolv.conf: " << ub_strerror(ret) << ". errno says: " << strerror(errno) << std::endl; +		SWIFT_LOG(error) << "error reading resolv.conf: " << ub_strerror(ret) << ". errno says: " << strerror(errno) << std::endl;  	}  	/* read /etc/hosts for locally supplied host addresses */  	if( (ret=ub_ctx_hosts(ubContext, const_cast<char*>("/etc/hosts"))) != 0) { -		SWIFT_LOG(debug) << "error reading hosts: " << ub_strerror(ret) << ". errno says: " << strerror(errno) << std::endl; +		SWIFT_LOG(error) << "error reading hosts: " << ub_strerror(ret) << ". errno says: " << strerror(errno) << std::endl;  	} @@ -231,10 +232,15 @@ void UnboundDomainNameResolver::processData() {  } -boost::shared_ptr<DomainNameServiceQuery> UnboundDomainNameResolver::createServiceQuery(const std::string& name) { -	return boost::make_shared<UnboundDomainNameServiceQuery>(this, ubContext, name); +boost::shared_ptr<DomainNameServiceQuery> UnboundDomainNameResolver::createServiceQuery(const std::string& serviceLookupPrefix, const std::string& domain) { +	boost::optional<std::string> encodedDomain = idnConverter->getIDNAEncoded(domain); +	std::string result; +	if (encodedDomain) { +		result = serviceLookupPrefix + *encodedDomain; +	} +	return boost::make_shared<UnboundDomainNameServiceQuery>(this, ubContext, result);  }  boost::shared_ptr<DomainNameAddressQuery> UnboundDomainNameResolver::createAddressQuery(const std::string& name) { -	return boost::make_shared<UnboundDomainNameAddressQuery>(this, ubContext, name); +	return boost::make_shared<UnboundDomainNameAddressQuery>(this, ubContext, idnConverter->getIDNAEncoded(name).get_value_or(""));  } | 
 Swift
 Swift