Why do we need to include ithread.h here ? Can we live with forward declarations ?

Also, forward declares of stuff from upnp.h is sufficient (we only deal with pointers in the header). So that include can go as well.