X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fnet%2Fresolve.cpp;h=cd65b9caccc66b6fb0a88f813850ea387d9ffaac;hb=b91b37fd6534a8e546fd6f5d6ddd91d66cd0519f;hp=6de883895eeb05f4b88a5cdf2cabc66b483274ac;hpb=6f6845971a21c2d7e04b87925f5e657f0f20ca0d;p=libs%2Fnet.git diff --git a/source/net/resolve.cpp b/source/net/resolve.cpp index 6de8838..cd65b9c 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" @@ -137,7 +132,16 @@ 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(); } } @@ -207,7 +211,7 @@ void Resolver::WorkerThread::main() Task *task = 0; { MutexLock lock(queue_mutex); - for(list::iterator i=queue.begin(); (!task && i!=queue.end()); ++i) + for(deque::iterator i=queue.begin(); (!task && i!=queue.end()); ++i) if(!i->is_complete()) task = &*i; }