Create a server channel and store this in the ifstub.
Rename ipid_to_apt_and_stubbuffer to ipid_get_dispatch_params and make
the function return an HRESULT.
Return the channel for the ifstub in ipid_get_dispatch_params.
message directly to the apartment window for it to process. Fixes a
deadlock in InstallShield caused by having to create a thread when
freeing an object that comes from an STA apartment. Added tests that
fail without this fix.
- Move the modal loop called during RPCs into CoWaitForMultipleHandles.
- Use a mutex for long remoting calls to IRemUnknown methods.
- Remove locking in apartment_disconnectproxies as it is not needed.
- Use PostMessage instead of SendMessage so we can run the message
loop or not as appropriate.
- Rename register_ifstub to marshal_object to more accurately describe
what it does.
- Add new function, apartment_getoxid, to prepare for a possible
future patch where remoting is started on demand.
occasional test crash caused by heap corruption.
- Zero the memory block passed to RpcServerRegisterIfEx so we don't
pass garbage in some of the fields we don't fill in.
- Return the correct error code from create_server and fix two handle
leaks.
- TODO update.
the apartment structure.
- Don't pass an IPID by value for proxy_manager_create_ifproxy.
- Disable more of RPC_UnregisterInterface to prevent the RPC runtime
using freed memory.
- Rename various external RPC backend functions so that they all have
the same "RPC_" prefix.
- Reduce the timeout of the function that connects to a local server
to 30s, like native.
need locking no longer have locking.
- Add special cases for the threads that join apartments but can't
increase the refcount of the apartment.
- Free TLS storage on thread destruction (including releasing the
apartment the thread is in, if any, and so making another test
pass).
- Rework RPC dispatch layer to be simpler and not get confused by
server/client duality.
- Make threads shut down at the right time and not access freed memory
after apartment destruction.
- Rename stub_dispatch_thread to client_dispatch_thread.
- Add some more tracing
- Check return value of WaitNamedPipe.
- Change named pipe timeouts to 0.5s, which should be enough for even the slowest machines.
- Change return code of CoGetPSClsid to match test result.
- Do a slight hack to make IRemUnknown proxies be added after the
proxy that uses them to stop them being used after they are
destroyed.
- Fix multiple local server connections.
show that IInternalUnknown isn't exposed.
- Implement IMultiQI on top of IRemUnknown calls.
- Silence some fixmes that occur during tests and don't give us any
useful information.
- Fix typo in class factory proxy that caused us to use the wrong
offset into the CFProxy structure, causing us to not call the
outer_unknown properly.
stub_manager and ifstub structs.
- Make stub_manager ref counted to ensure it doesn't get freed whilst
it is still being used.
- ifstubs are now freed only when the controlling stub_manager is freed.
- Rename stub_manager_ref/unref to stub_manager_ext_addref/release
respectively and make then take an unsigned long to prevent
malicious callers from passing in a negative value and corrupting
the ref count.