fix one more extern c declaration
move initializer list to impl

msvc does not like this in the header for some reason
libupnp needs static linkage with msvc