throw IllegalStateException when trying to finish from a non terminal state
This commit is contained in:
		
							parent
							
								
									350fc57d87
								
							
						
					
					
						commit
						285c750e69
					
				@ -58,6 +58,9 @@ public class JingleRtpConnection extends AbstractJingleConnection implements Web
 | 
				
			|||||||
    );
 | 
					    );
 | 
				
			||||||
    private static final long BUSY_TIME_OUT = 30;
 | 
					    private static final long BUSY_TIME_OUT = 30;
 | 
				
			||||||
    private static final List<State> TERMINATED = Arrays.asList(
 | 
					    private static final List<State> TERMINATED = Arrays.asList(
 | 
				
			||||||
 | 
					            State.ACCEPTED,
 | 
				
			||||||
 | 
					            State.REJECTED,
 | 
				
			||||||
 | 
					            State.RETRACTED,
 | 
				
			||||||
            State.TERMINATED_SUCCESS,
 | 
					            State.TERMINATED_SUCCESS,
 | 
				
			||||||
            State.TERMINATED_DECLINED_OR_BUSY,
 | 
					            State.TERMINATED_DECLINED_OR_BUSY,
 | 
				
			||||||
            State.TERMINATED_CONNECTIVITY_ERROR,
 | 
					            State.TERMINATED_CONNECTIVITY_ERROR,
 | 
				
			||||||
@ -642,13 +645,13 @@ public class JingleRtpConnection extends AbstractJingleConnection implements Web
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            setupWebRTC(media, iceServers);
 | 
					            setupWebRTC(media, iceServers);
 | 
				
			||||||
        } catch (WebRTCWrapper.InitializationException e) {
 | 
					        } catch (final WebRTCWrapper.InitializationException e) {
 | 
				
			||||||
            Log.d(Config.LOGTAG, id.account.getJid().asBareJid() + ": unable to initialize WebRTC");
 | 
					            Log.d(Config.LOGTAG, id.account.getJid().asBareJid() + ": unable to initialize WebRTC");
 | 
				
			||||||
            webRTCWrapper.close();
 | 
					            webRTCWrapper.close();
 | 
				
			||||||
            //todo we haven’t actually initiated the session yet; so sending sessionTerminate makes no sense
 | 
					            //todo we haven’t actually initiated the session yet; so sending sessionTerminate makes no sense
 | 
				
			||||||
            //todo either we don’t ring ever at all or maybe we should send a retract or something
 | 
					            //todo either we don’t ring ever at all or maybe we should send a retract or something
 | 
				
			||||||
            transitionOrThrow(State.TERMINATED_APPLICATION_FAILURE);
 | 
					            transitionOrThrow(State.TERMINATED_APPLICATION_FAILURE);
 | 
				
			||||||
            this.finish();;
 | 
					            this.finish();
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
@ -1142,9 +1145,13 @@ public class JingleRtpConnection extends AbstractJingleConnection implements Web
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void finish() {
 | 
					    private void finish() {
 | 
				
			||||||
 | 
					        if (isTerminated()) {
 | 
				
			||||||
            this.cancelRingingTimeout();
 | 
					            this.cancelRingingTimeout();
 | 
				
			||||||
            this.webRTCWrapper.verifyClosed();
 | 
					            this.webRTCWrapper.verifyClosed();
 | 
				
			||||||
            this.jingleConnectionManager.finishConnection(this);
 | 
					            this.jingleConnectionManager.finishConnection(this);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            throw new IllegalStateException(String.format("Unable to call finish from %s", this.state));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void writeLogMessage(final State state) {
 | 
					    private void writeLogMessage(final State state) {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user