Commit Graph

157 Commits

Author SHA1 Message Date
Robert Shearman
2d2a39cc42 - Use I_RpcGetBuffer, instead of our own buffer routines to fix an
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.
2005-02-15 21:48:09 +00:00
Robert Shearman
552cc7d5b3 - Remove cruft left over from previous RPC backend implementation in
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.
2005-02-15 15:44:25 +00:00
Robert Shearman
db6db7cb4c Make COM use the RPC runtime as the backend for RPC calls. Based on a
patch by Ove Kåven.
2005-02-15 15:02:49 +00:00
Robert Shearman
2ff1711487 Invoke objects in STA's in the correct thread by sending messages to
the hidden apartment window.
2005-02-14 11:50:51 +00:00
Robert Shearman
f8a2edb805 - Split up apartment creation so that the long code paths that don't
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).
2005-02-08 13:42:15 +00:00
Alexandre Julliard
2a46702761 Authors: Mike Hearn <mh@codeweavers.com>, Robert Shearman <rob@codeweavers.com>
- 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.
2005-02-08 12:55:26 +00:00
Robert Shearman
9b634b97ae - More tests.
- 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.
2005-01-28 12:39:13 +00:00
Robert Shearman
3018974ce3 - Make proxy manager use IMultiQI instead of IInternalUnknown as tests
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.
2005-01-26 21:07:05 +00:00
Robert Shearman
cbbf08a7e2 - Use InterlockedIncrement for the ipid counter instead of a critical
section (suggested by Mike Hearn).
- Remove a line added by a bad merge.
- Implement RemUnkStub_Disconnect.
- Remove all of the RPC disconnect code.
2005-01-26 20:53:06 +00:00
Robert Shearman
963ac3f013 - Implement IRemUnknown.
- Use IRemUnknown for life-cycle management instead of the current
  hacks.
2005-01-26 20:42:30 +00:00
Robert Shearman
ad34f3dc5e - Generate machine-local IPIDs.
- Make pipes be uniquely identified only by their IPID.
2005-01-25 10:57:24 +00:00
Mike Hearn
70c1c26869 Various formatting/style changes. 2005-01-21 10:15:29 +00:00
Robert Shearman
6036a773e2 - The apartment reference should be held while the stub manager
reference is held.
- Fix same apartment-unmarshal detection.
2005-01-14 16:48:34 +00:00
Robert Shearman
ead057c4b7 - Don't use the pipe caching code because it doesn't work correctly at
the moment.
- Always write disconnect reply packet, even in failure cases.
2005-01-14 15:59:01 +00:00
Mike Hearn
ba0475e738 Force context switch on chanbuf disconnect to avoid a race in the test
suite.
2005-01-14 15:11:24 +00:00
Robert Shearman
89f5c8241f The way apartments are used has changed, so fix up the hacks in the
RPC code that haven't yet been updated.
2005-01-12 19:27:22 +00:00
Robert Shearman
c353f85082 - Document how thread-safety is ensured for each member of the
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.
2005-01-11 10:45:34 +00:00
Robert Shearman
090003360f The current architecture cannot handle pipes changing address, so use
a static array. Fixes memory corruption that sometimes occurs when
using multiple pipes.
2005-01-07 15:33:26 +00:00
Robert Shearman
67bae9f213 ConnectNamedPipe returning ERROR_PIPE_CONNECTED is not an error. 2005-01-06 19:38:48 +00:00
Robert Shearman
9f426df0a8 - Fix race on apartment creation.
- Display errors in decimal to make searching for the meaning in
  winerror.h easier.
2005-01-05 17:30:04 +00:00
Mike Hearn
a6a416cb4e - Make apartment access thread-safe by introducing refcounting and
wider usage of the apartment lock.
- Rework OLE TLS management to eliminate uninitialised apartments and
  parent chaining.
2005-01-05 17:14:33 +00:00
Mike McCormack
a246306870 Allow COM to start services containing COM servers. 2005-01-05 13:22:10 +00:00
Robert Shearman
5d7d188df5 - Move named pipe macros into rpc.c.
- Remove unneeded function.
2004-12-27 19:27:57 +00:00
Robert Shearman
2b747d4e50 Implement COM local servers using table marshaling to avoid doing the
marshaling in a child thread where COM has not been initialized.
2004-12-27 19:24:55 +00:00
Mike Hearn
5475a2e617 - Implement the COM stub manager, refactor the current stub code.
- Begin implementing interface stubs.
2004-12-27 19:21:47 +00:00
Mike Hearn
737e67b17b Propagate apartments through the intermediate threads, make listener
thread apartment scoped.
2004-12-27 16:59:28 +00:00
Robert Shearman
2fa9a0a6fd Remove unneeded includes and the unused COMPOBJ_hInstance32 variable. 2004-12-14 15:28:58 +00:00
Robert Shearman
2c3de6db24 - Make the wine_marshal_id structure more like the DCOM OBJREF
structure, by replacing the process id field by apartment id (OXID),
  changing the users of the process id field to use the new field and
  renaming the objectid field to oid.
- Fix StdMarshalImpl_UnmarshalInterface to invalidate and release its
  stub when doing a same apartment marshal.
2004-12-08 17:49:30 +00:00
Mike Hearn
36aee71988 Rename the STUBMGR thread to more accurately reflect its purpose. 2004-12-07 17:01:40 +00:00
Francois Gouget
486d020c1b Don't define COBJMACROS in objbase.h.
Update the Wine sources accordingly.
2004-10-07 03:06:48 +00:00
Joris Huizer
34cffce6f9 Ref count increment/decrement cleanup. 2004-09-24 01:16:53 +00:00
Alexandre Julliard
241a4c34b1 Get rid of the non-standard ICOM_THIS macro. 2004-09-09 21:03:58 +00:00
Alexandre Julliard
f714b39762 Get rid of the no longer used ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
macro.
2004-08-23 19:39:48 +00:00
Alexandre Julliard
48c4bb3c31 Get rid of the non-standard ICOM_VTABLE macro. 2004-08-12 23:00:51 +00:00
Robert Shearman
5c7c5fafb6 - Add static to non-exported marshal functions.
- Remove unused marshal functions.
- Rename several RPC functions.
2004-08-02 18:47:31 +00:00
Alexandre Julliard
6cd1a7d9a9 Authors: Robert Shearman <rob@codeweavers.com>, Mike Hearn <mh@codeweavers.com>
Fix infinite loops by checking the return value of _invoke_onereq and
bailing appropriately.
2004-07-30 18:43:07 +00:00
Mike Hearn
5169f3c5d2 Implement disconnect for proxies so that stubs are properly
destroyed.
2004-07-29 23:58:12 +00:00
Alexandre Julliard
26541a00c9 Authors: Mike Hearn <mh@codeweavers.com>, Robert Shearman <rob@codeweavers.com>
Add a comment on the SendReceive behaviour. Improve two others.
2004-07-29 02:43:36 +00:00
Robert Shearman
f5ed953c10 Set RPC data representation. 2004-07-23 22:58:13 +00:00
Mike Hearn
1cc05ff148 Pass -Embedding switch to EXE servers, more tracing. 2004-07-23 19:10:13 +00:00
Robert Shearman
2e93adc5c7 - Remove unneeded STUBMGR_Start call.
- Cleanup compobj_private.h.
2004-07-22 23:44:54 +00:00
Mike Hearn
602cce0ebf Unref stub after invoking on it. 2004-07-22 19:43:27 +00:00
Mike McCormack
e42d8aef24 Fix a few serious race conditions in the OLE object pipe server. 2004-07-15 22:07:44 +00:00
Ge van Geldorp
399901e054 Rename LARGE_INTEGER and ULARGE_INTEGER members "s" to "u" to conform
with PSDK.
2004-01-23 01:51:33 +00:00
Oleg Prokhorov
de12a97041 Another portion of HeapReAlloc fixes. 2003-10-14 05:24:20 +00:00
Alexandre Julliard
20c169e0a4 Fixed a few more headers dependency issues. 2003-09-09 19:39:31 +00:00
Alexandre Julliard
e37c6e18d0 Fixed header dependencies to be fully compatible with the Windows
headers (with help from Dimitrie O. Paun).
2003-09-05 23:08:26 +00:00
Dan Kegel
743af54541 Roll loop back up to avoid code duplication. 2003-02-14 23:30:50 +00:00
Michael Stefaniuc
3dcd451bf6 Remove dead code after return or properly comment it out. 2003-02-12 01:23:17 +00:00
Dimitrie O. Paun
297f3d898d Define NONAMELESS{STRUCT,UNION} explicitly in the files that need them. 2003-01-07 20:36:20 +00:00
Alexandre Julliard
87fa2d586d Fixed a few problems caused by the new objidl.idl. 2002-12-19 22:16:35 +00:00
Alexandre Julliard
8710a79d54 Compile ole32 with -DSTRICT. 2002-11-22 04:43:02 +00:00
Bill Medland
978a934245 Fixed incorrect pointer-cast arithmetic.
Extended ole trace information.
Don't lose the existing pipes on alloc failure.
2002-06-04 00:53:21 +00:00
Vincent Béron
9a62491660 Removed trailing whitespace. 2002-05-31 23:06:46 +00:00
Bill Medland
d36c8e9d0c Ensure that an out-of-process COM object is started only once.
Allow out-of-process COM objects if request is for
in-or-out-of-process.
2002-05-29 19:20:32 +00:00
Alexandre Julliard
0799c1a780 Added LGPL standard comment, and copyright notices where necessary.
Global replacement of debugtools.h by wine/debug.h.
2002-03-09 23:29:33 +00:00
Marcus Meissner
0749fc2034 Implemented Local Server COM.
Implemented the Typelib based Marshaler.
2002-02-05 18:11:17 +00:00