Skip to content
This repository was archived by the owner on Oct 23, 2024. It is now read-only.

Commit 18a5eec

Browse files
authored
Save internal address for locality in conference (#1028)
1 parent a142518 commit 18a5eec

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

source/agent/conference/roomController.js

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,12 @@ module.exports.create = function (spec, on_init_ok, on_init_failed) {
8181
*/
8282
var terminals = {};
8383

84+
/*
85+
Save internal address for locality node to avoid duplicate `getInternalAddress` RPC.
86+
internalAddresses = {nodeRpcID: {ip: agentIP, port: internalPort, readyCb: callback}}
87+
*/
88+
var internalAddresses = {};
89+
8490
/*
8591
streams = {StreamID: {owner: terminalID,
8692
audio: {format: 'pcmu' | 'pcma' | 'isac_16000' | 'isac_32000' | 'opus_48000_2' |...
@@ -419,17 +425,25 @@ module.exports.create = function (spec, on_init_ok, on_init_failed) {
419425
published: [],
420426
subscribed: {}};
421427
on_ok();
422-
// Get internal address for new node
423-
if (!locality.ip || !locality.port) {
428+
//TODO: trigger terminal ok after getInternalAddress call.
429+
// The conference logic requires newTerminal finish fast.
430+
if (!internalAddresses[locality.node]) {
431+
// Get internal address for new node
424432
makeRPC(rpcClient, locality.node, 'getInternalAddress', [],
425433
function okCb(addr) {
426434
log.debug('Get internal addr:', locality.node ,addr);
427-
terminals[terminal_id].locality.ip = addr.ip;
428-
terminals[terminal_id].locality.port = addr.port;
435+
internalAddresses[locality.node] = {};
436+
internalAddresses[locality.node].ip = addr.ip;
437+
internalAddresses[locality.node].port = addr.port;
438+
locality.ip = addr.ip;
439+
locality.port = addr.port;
429440
},
430441
function errCb(reason) {
431442
log.warn('Failed to get internal addr:', locality.node);
432443
});
444+
} else {
445+
locality.ip = internalAddresses[locality.node].ip;
446+
locality.port = internalAddresses[locality.node].port;
433447
}
434448
}, function(err) {
435449
on_error(err.message? err.message : err);

0 commit comments

Comments
 (0)