If AsyncDNS is enabled, the NSISdl eats 100% cpu while the DNS resolution is occuring.
This is because if m_dns->resolve() returns 1 no waiting has occured, and the plugin tight-loops on run(). Something like this would fix it in a reasonable way:
else if (a == 1)
{
m_state=STATE_RESOLVING;
if (m_dns->m_thread)
{
WaitForSingleObject(m_dns->m_thread, 100);
}
break;
}
But you would have to make m_thread public. This is slightly better than a Sleep() hack, because it's alertable.
Logged In: YES
user_id=584402
Originator: NO
Thanks, fixed by applying the original speed-up patch with the sleeps in statuses 0 and 1.
Logged In: YES
user_id=731668
Originator: YES
Sorry, which speed-up patch?
Logged In: YES
user_id=584402
Originator: NO
The original patch that introduced the conditional Sleep. In that patch, there was Sleep for the "headers" case, but I removed that. I've now added it back. The patch is at:
http://sourceforge.net/tracker/index.php?func=detail&aid=1465378&group_id=22049&atid=373087