A computer-implemented method of supporting a voice call conducted via one or more computer networks, the method comprising: - receiving, at a communication server (122, 220), a call offer from a caller device, wherein the call offer identifies a callee device or a user of a callee device; - transmitting, by the communication server (122, 220), to the caller device and the callee device addresses of multiple candidate relay servers (126, 230); - receiving, at the communication server (122, 220), from one or both of the caller device and the callee device a selection of one relay server among the multiple candidate relay servers; and - temporarily conducting, by the selected relay server, the voice call in a relay mode of operation that includes the caller device, the selected relay server, and the callee device; - wherein, during the voice call, the caller device and the callee device switch at least once between the relay mode of operation and a peer-to-peer mode of operation in which they conduct the voice call directly, without any of the multiple candidate relay servers, the method further comprising: - at the communication server (122, 220) different than the multiple candidate relay servers (126, 230): - receiving external addresses of the caller device and the callee device from the caller device and the callee device respectively; and - forwarding the external addresses to the other of the caller device and the callee device; and - after one of the caller device and the callee device roams from a first network to a second network: - receiving at the selected relay server a new connection from one of the caller device and the callee device - identifying to the one device (210/240), from the selected relay server, a new external address of the one device (210/240); - receiving from the one device (210/240) the new external address at the communication server; and - forwarding the new external address from the communication server to the other of the caller device and the callee device, such that the caller device and the callee device are able to restart the relay mode of operation based on the new external address. - receiving, at a communication server (122, 220), a call offer from a caller device, wherein the call offer identifies a callee device or a user of a callee device; - transmitting, by the communication server (122, 220), to the caller device and the callee device addresses of multiple candidate relay servers (126, 230); - receiving, at the communication server (122, 220), from one or both of the caller device and the callee device a selection of one relay server among the multiple candidate relay servers; and - temporarily conducting, by the selected relay server, the voice call in a relay mode of operation that includes the caller device, the selected relay server, and the callee device; - wherein, during the voice call, the caller device and the callee device switch at least once between the relay mode of operation and a peer-to-peer mode of operation in which they conduct the voice call directly, without any of the multiple candidate relay servers, - at the communication server (122, 220) different than the multiple candidate relay servers (126, 230): - receiving external addresses of the caller device and the callee device from the caller device and the callee device respectively; and - forwarding the external addresses to the other of the caller device and the callee device; and - receiving external addresses of the caller device and the callee device from the caller device and the callee device respectively; and - forwarding the external addresses to the other of the caller device and the callee device; and - after one of the caller device and the callee device roams from a first network to a second network: - receiving at the selected relay server a new connection from one of the caller device and the callee device - identifying to the one device (210/240), from the selected relay server, a new external address of the one device (210/240); - receiving from the one device (210/240) the new external address at the communication server; and - forwarding the new external address from the communication server to the other of the caller device and the callee device, such that the caller device and the callee device are able to restart the relay mode of operation based on the new external address. - receiving at the selected relay server a new connection from one of the caller device and the callee device - identifying to the one device (210/240), from the selected relay server, a new external address of the one device (210/240); - receiving from the one device (210/240) the new external address at the communication server; and - forwarding the new external address from the communication server to the other of the caller device and the callee device, such that the caller device and the callee device are able to restart the relay mode of operation based on the new external address.