]> git.tdb.fi Git - libs/net.git/blobdiff - source/net/resolve.cpp
Use default member initializers where possible
[libs/net.git] / source / net / resolve.cpp
index 10e8c656797fedfdd685b2edb48ad5f20a217996..fd59cbb37ddf1cea8f1377527645262300bd42be 100644 (file)
@@ -81,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));
 }
@@ -132,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<runtime_error> 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();
 }
@@ -202,7 +200,7 @@ void Resolver::WorkerThread::main()
                Task *task = 0;
                {
                        MutexLock lock(queue_mutex);
-                       for(list<Task>::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;
                }