3.2.5.4 Sending an EcRRegisterPushNotification Method Call

The client MAY<22> make an EcRRegisterPushNotification method call, as specified in [MS-OXCRPC] section 3.1.4.5, to register a callback address for the session context with the server. The callback address is required in order to receive push notification UDP datagrams from the server. In addition to the callback address, the client MUST provide a buffer of opaque data to the server.

The client can register a variety of different callback address types if the server supports the address type. A client SHOULD register a callback address by using an address type that corresponds to the protocol being used to communicate with the server. For example, if the client makes an RPC call to EcDoConnectEx, as specified in [MS-OXCRPC] section 3.1.4.1, by using the TCP/IP protocol, it registers an AF_INET callback address in the EcRRegisterPushNotification method call.

Because of network conditions such as firewalls or the use of RPC/HTTP connections by the client, it is not always possible for the UDP datagram that is sent from the server to the client's callback address to be successful. To overcome this problem, the client SHOULD poll the server by using the polling method, even after registering a callback address with the server through an EcRRegisterPushNotification method call, until it receives a UDP datagram from the server. When the client receives a UDP datagram from the server at the specified callback address, it SHOULD stop polling the server and rely on datagrams pushed from the server to know when to call the EcDoRpcExt2 method, as specified in [MS-OXCRPC] section 3.1.4.2, to retrieve event information.