I noticed the wininet callbacks don't respond quite the same as
windows does. Primarily the async calls complete almost immediately
while on windows they don't respond at all until an alertable function
is called (eg. SleepEx).
Looking through the wininet code, I noticed we are using worker
threads for async transfers rather then async procedure calls
via QueueUserAPC, which is how windows does it AFAICT.
Is there a reason for this? Would it be a problem if the implementation
was changed to use APC?
IMHO this would reduce some overhead as we would not be creating
extra worker threads when not really needed, the callbacks would respond
more similar to how they respond under windows, and may significantly
simplify the code.
If there are no arguments against this, I would like to work on it.