X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fnet%2Fresolve.cpp;h=fd59cbb37ddf1cea8f1377527645262300bd42be;hb=6625cf0e574406425c35d33110f8d99617e902df;hp=992973a01dea4f73c51b54600748b0015ce0542b;hpb=fa637ffb18421300e401a782d28dd729a3960ac4;p=libs%2Fnet.git diff --git a/source/net/resolve.cpp b/source/net/resolve.cpp index 992973a..fd59cbb 100644 --- a/source/net/resolve.cpp +++ b/source/net/resolve.cpp @@ -1,9 +1,4 @@ -#ifdef WIN32 -#define _WIN32_WINNT 0x0501 -#include -#else -#include -#endif +#include "platform_api.h" #include #include #include "sockaddr_private.h" @@ -70,7 +65,7 @@ SockAddr *resolve(const string &host, const string &serv, Family family) return addr; } else -#ifdef WIN32 +#ifdef _WIN32 throw system_error("getaddrinfo", WSAGetLastError()); #else throw system_error("getaddrinfo", gai_strerror(err)); @@ -86,9 +81,7 @@ SockAddr *resolve(const string &str, Family family) } -Resolver::Resolver(): - event_disp(0), - next_tag(1) +Resolver::Resolver() { thread.get_notify_pipe().signal_data_available.connect(sigc::mem_fun(this, &Resolver::task_done)); } @@ -137,24 +130,24 @@ void Resolver::task_done() if(task->addr) signal_address_resolved.emit(task->tag, *task->addr); else if(task->error) + { + if(signal_resolve_failed.empty()) + { + RefPtr err = task->error; + task->error = 0; + thread.pop_complete_task(); + throw *err; + } signal_resolve_failed.emit(task->tag, *task->error); + } thread.pop_complete_task(); } } -Resolver::Task::Task(): - tag(0), - family(UNSPEC), - addr(0), - error(0) -{ } - - Resolver::WorkerThread::WorkerThread(): Thread("Resolver"), - sem(1), - done(false) + sem(1) { launch(); } @@ -207,7 +200,7 @@ void Resolver::WorkerThread::main() Task *task = 0; { MutexLock lock(queue_mutex); - for(list::iterator i=queue.begin(); (!task && i!=queue.end()); ++i) + for(auto i=queue.begin(); (!task && i!=queue.end()); ++i) if(!i->is_complete()) task = &*i; } @@ -234,16 +227,5 @@ void Resolver::WorkerThread::main() } } - /*sockaddr sa; - unsigned size = fill_sockaddr(sa); - char hst[128]; - char srv[128]; - int err = getnameinfo(&sa, size, hst, 128, srv, 128, 0); - if(err==0) - { - host = hst; - serv = srv; - }*/ - } // namespace Net } // namespace Msp