I am curious about Perl Win32::OLE's implementation (or lack thereof) of the IMessageFilter interface. I have a COM server which implements IMessageFilter in order to prevent reentrancy and serialize calls into a second COM server. In the IMessageFilter::HandleIncomingCall implementation I return either SERVERCALL_RETRYLATER if I can't handle the request now, or SERVERCALL_ISHANDLED if I want the request to be processed. The problem it seems that when I make 2 simultaneous calls from Win32::OLE into my server, one of them returns the error "call was rejected by callee". It is as if instead of retrying the COM call, Perl simply thinks the call was rejected outright and returns that error.
The other side of this is that calling my COM server which implements IMessageFilter from an (ATL) COM client seems to work ok. So I am guessing that perhaps ATL provides a default client implementation of IMessageFilter::RetryRejectedCall which actually retries the call while Perl Win32::OLE does not provide this implementation. I did a quick grep of the Win32::OLE source and found no references to IMessageFilter, RetryRejected, or anything like that but I could have missed something. All I want is for my COM call to be retried until the server ultimately determines it is ok to process and returns SERVERCALL_ISHANDLED. If anybody has any insight into this scenario and the behavior of Perl with respect to COM message filters, I would be very grateful. _______________________________________________ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs