This merge request implements the `httpapi.dll` `HttpResponseSendEntityBody` function and associated tests. API documentation was written by me by paraphrasing/re-writing what I had read for the function from the MSDN documentation. I am adding this function to enable the remote API component of the Space Engineers Dedicated Server.
Implementation notes:
- I mainly copied the relevant portion of `HttpSendHttpResponse` for `HttpResponseSendEntityBody`.
- I updated the `http_response` struct to add a field `response_flags`
- This field tracks the flags passed in to `HttpSendHttpResponse` and `HttpResponseSendEntityBody`.
- This was needed because the clean-up steps in `http.sys` need to be skipped when `HTTP_SEND_RESPONSE_FLAG_MORE_DATA` is set.
- I updated `HttpSendHttpResponse` to handle the `HTTP_SEND_RESPONSE_FLAG_MORE_DATA` flag by omitting the `Content-Length` header and setting the `response_flags` field in the `response` object passed to `http.sys`.
- The `Content-Length` header is omitted by the Windows implementation and thus I omitted it here for conformance purposes.
- I updated `http_send_response` in `http.sys` to skip the connection clean up steps if the `HTTP_SEND_RESPONSE_FLAG_MORE_DATA` flag was set. This works for both `HttpSendHttpResponse` and `HttpResponseSendEntityBody` as either could set the flag to continue to send more data.
- It is not 100% clear to me what the cleanup steps are doing. In particular, I am uncertain what lines 1011-1016 and 1023-1027 are doing, but based on context it seemed appropriate to keep them with the other connection cleanup steps.
For testing, I duplicated the existing `HttpSendHttpResponse` test but modified it to set the `HTTP_SEND_RESPONSE_FLAG_MORE_DATA` flag and then followed up with a call to `HttpResponseSendEntityBody` with new data. The validation ensures that data from both the initial response and follow up response are contained in the final response obtained via `recv()`. On Windows 11 this happens immediately without any delay, but in Wine I had to add a `Sleep(100)` to give enough time for the follow up response to be received in the socket buffer by the time the `recv()` call was made in the test. I could have looped the `recv()` call to collect all of the response, but that felt more complicated than adding a minor delay. The tests were verified against Windows 11 Pro (build 22621.3880).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6216
--
v2: mshtml: Add support for MutationObserver consturctor and prototype objects.
mshtml: Use host object script bindings for Option constructor object.
mshtml: Add support for option element prototype objects.
mshtml: Use host constructor script bindings for XMLHttpRequest constructor object.
mshtml: Use host constructor script bindings for Image constructor object.
jscript: Introduce HostConstructor function type.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6212
Tested using C&C Red Alert 2; selection of interface and network communication worked as expected. IPX traffic correctly sent to the selected interface only, as confirmed by **tcpdump(8)**.

--
v4: ws2_32: Fully implement socket options IPX_ADDRESS and IPX_MAX_ADAPTER_NUM on Linux
https://gitlab.winehq.org/wine/wine/-/merge_requests/6191
Tested using C&C Red Alert 2; selection of interface and network communication worked as expected. IPX traffic correctly sent to the selected interface only, as confirmed by **tcpdump(8)**.

--
v2: ws2_32: Fully implement socket options IPX_ADDRESS and IPX_MAX_ADAPTER_NUM on Linux
https://gitlab.winehq.org/wine/wine/-/merge_requests/6191
Otherwise, with multi-TLC devices, concurrent PDO threads would steal
reports from each other, which causes random timeouts in the tests.
Fixes: c65d5b094825afdafba462a4050a490426f3cd51
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6214
I have opened https://gitlab.winehq.org/wine/wine/-/merge_requests/6213 which I believe should fix the issue in a simpler way.
Note that it's not completely correct in any case, and there might be some unexpected behavior if applications rely on monitor display settings. We still allow different virtual desktop window sizes while the underlying virtual desktop size should always be the same as the monitor rectangles, which is normally (on Windows) the same across all the desktops of the interactive window station.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6150#note_77860
Move implementation of these 2 options into ntdll, and add 2 ioctl codes
for calling from ws2_32.
Query configured IPX interfaces by reading /proc/net/ipx/interface of
Linux procfs, enabling applications to iterate multiple IPX interfaces.
This can be useful when a node have multiple IPX interfaces, and
application need to receive/send packets from/to a non-primary IPX
interface.
Signed-off-by: WHR <whr(a)rivoreo.one>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6191