Recently I was experiencing very slow dns resolution (due to other problems with network-manager leaving in work dns servers in /etc/resolv.conf even though I was at home). I repeatedly saw that if I used /dns then the UI was unresponsive until the operation completed -- 5 to 10 seconds during this period of slow dns resolution.
Looks like /dns' name resolving code is currently synchronous rather than asynchronous indeed. Fixing this is going to take a bit longer than one might think because a really good fix will need some refactoring in the framework it's implemented in.
(For the record: Name resolving when making a new IRC server connection is not affected; that's done asynchronously.)
Git commit 1f8ae8dbbaa64cf25910656a85be3014d47b1074 by Eike Hein.
Committed on 14/04/2011 at 22:07.
Pushed by hein into branch 'master'.
Make /dns non-blocking.
M +4 -0 ChangeLog
M +1 -0 src/CMakeLists.txt
M +4 -48 src/irc/outputfilter.cpp
A +84 -0 src/irc/outputfilterresolvejob.cpp [License: GPL (v2/3)]
A +51 -0 src/irc/outputfilterresolvejob.h [License: GPL (v2/3)]