diff --git a/src/api/ngcp-call.js b/src/api/ngcp-call.js index 959ea271..6cb108ff 100644 --- a/src/api/ngcp-call.js +++ b/src/api/ngcp-call.js @@ -134,18 +134,25 @@ export function callRegister ({ instanceId }) { delegateEvent('registrationFailed') $userAgent.on('newRTCSession', (event) => { if (event.originator === 'remote') { - $incomingRtcSession = event.session - $incomingRtcSession.on('peerconnection', () => { - $incomingRtcSession.connection.ontrack = handleRemoteMediaStream - }) - $incomingRtcSession.on('failed', (failedEvent) => { - callEvent.emit('incomingFailed', failedEvent) - }) - $incomingRtcSession.on('ended', (failedEvent) => { - callEvent.emit('incomingEnded', failedEvent) - $incomingRtcSession = null - }) - callEvent.emit('incoming', $incomingRtcSession) + if ($incomingRtcSession || $outgoingRtcSession) { + event.session.terminate({ + status_code: 486, + reason_phrase: 'Busy' + }) + } else { + $incomingRtcSession = event.session + $incomingRtcSession.on('peerconnection', () => { + $incomingRtcSession.connection.ontrack = handleRemoteMediaStream + }) + $incomingRtcSession.on('failed', (failedEvent) => { + callEvent.emit('incomingFailed', failedEvent) + }) + $incomingRtcSession.on('ended', (failedEvent) => { + callEvent.emit('incomingEnded', failedEvent) + $incomingRtcSession = null + }) + callEvent.emit('incoming', $incomingRtcSession) + } } }) $userAgent.start() diff --git a/src/store/call/actions.js b/src/store/call/actions.js index d06a2fac..c485c59c 100644 --- a/src/store/call/actions.js +++ b/src/store/call/actions.js @@ -77,12 +77,14 @@ export default { context.commit('hangUpCall') } else if (options.cause && !errorVisibilityTimer) { context.commit('endCall', options.cause) - errorVisibilityTimer = setTimeout(() => { - if (context.state.callState === 'ended') { - context.commit('hangUpCall') - } - errorVisibilityTimer = null - }, errorVisibilityTimeout) + if (options.cause !== 'Busy') { + errorVisibilityTimer = setTimeout(() => { + if (context.state.callState === 'ended') { + context.commit('hangUpCall') + } + errorVisibilityTimer = null + }, errorVisibilityTimeout) + } } }, sendDTMF (context, tone) {