UbaAgent in 5.7 depends on qwave.dll, which is not available on Server Core

We run UbaAgent on Server Core. This worked in 5.5 and 5.6, but broke in 5.7.

After some investigation, it looks like UbaAgent took a new (hard) dependency on qwave.dll in order to set socket priorities. Unfortunately qwave.dll is part of the “Desktop Experience” and not available on Server Core, since it’s intended for Audio/Video scenarios which Server Core doesn’t cover.

Rather than a hard dependency on qwave.dll, UbaAgent should attempt to load qwave.dll at runtime via LoadLibrary, and skip applying socket priority if it’s not available. This would allow UbaAgent to work on Server Core again.

Steps to Reproduce

  • Attempt to run UbaAgent.exe on Server Core and observe an exit code of -1073741515 (HRESULT for DLL Not Found).
  • Comment out “include <qos2.h>”, “#pragma comment(lib, “qwave.lib”)” and the body of “SetSocketPriority” in UbaNetworkBackendTcp.cpp and rebuild UbaAgent.
  • Run UbaAgent.exe on Server Core again, and observe that it no longer exits with exit code of -1073741515 (HRESULT for DLL Not Found.

Hello!

Thanks for reporting. I filed a bug report which you soon be live at: https://issues.unrealengine.com/issue/UE-354602

Regards,

Martin