Patent ID: 8917311

Claim:
A method, performed in a system that includes an originating device, a first network address translation (NAT) device that performs NAT for the originating device, a terminating device, a second NAT device that performs NAT for the terminating device, a videotelephony server, and a push notification server, the method comprising: sending, by the originating device via the first NAT device, a first message to the videotelephony server that includes first candidate information, wherein the first candidate information has a unique identifier and includes an Internet Protocol (IP) address and a port number; sending, by the videotelephony server to the push notification server, the first message including the first candidate information; sending, by the push notification server via the second NAT device, the first message including the first candidate information to the terminating device; generating, by the terminating device, a first list of candidate pairs based on the first candidate information in the first message and second candidate information, wherein the second candidate information has a unique identifier and includes an IP address and a port number; sending, by the terminating device via the second NAT device, a second message to the videotelephony server including the second candidate information; adjusting, by the videotelephony server, the IP address and the port number in the second candidate information to create an adjusted second candidate information, such that, in the adjusted second candidate information, the IP address and the port number are 0.0.0.0:0; sending, by the videotelephony server, a third message to the push notification server including the adjusted second candidate information; sending, by the push notification server via the first NAT device, the third message to the originating device including the adjusted second candidate information; sending, by the terminating device, a binding request to the originating device, the binding request including the first list of candidate pairs; generating, by the originating device, a second list of candidate pairs based on the first candidate information and the adjusted second candidate information; and determining, by the originating device, if the binding request is received within a predetermined amount of time after the third message.