ensure that jingle ft transport is terminated
This commit is contained in:
parent
0f50f71176
commit
a2c67a6e38
|
@ -253,6 +253,7 @@ public class JingleFileTransferConnection extends AbstractJingleConnection
|
|||
id.account.getJid().asBareJid() + ": improperly formatted contents",
|
||||
Throwables.getRootCause(e));
|
||||
respondOk(jinglePacket);
|
||||
terminateTransport();
|
||||
sendSessionTerminate(Reason.of(e), e.getMessage());
|
||||
return;
|
||||
}
|
||||
|
@ -534,6 +535,7 @@ public class JingleFileTransferConnection extends AbstractJingleConnection
|
|||
if (isTerminated()) {
|
||||
return;
|
||||
}
|
||||
terminateTransport();
|
||||
final Throwable rootCause = Throwables.getRootCause(throwable);
|
||||
Log.d(Config.LOGTAG, "unable to send session accept", rootCause);
|
||||
sendSessionTerminate(Reason.ofThrowable(rootCause), rootCause.getMessage());
|
||||
|
@ -603,6 +605,7 @@ public class JingleFileTransferConnection extends AbstractJingleConnection
|
|||
id.account.getJid().asBareJid() + ": improperly formatted contents",
|
||||
Throwables.getRootCause(e));
|
||||
respondOk(jinglePacket);
|
||||
terminateTransport();
|
||||
sendSessionTerminate(Reason.of(e), e.getMessage());
|
||||
return;
|
||||
}
|
||||
|
@ -646,6 +649,7 @@ public class JingleFileTransferConnection extends AbstractJingleConnection
|
|||
id.account.getJid().asBareJid() + ": improperly formatted contents",
|
||||
Throwables.getRootCause(e));
|
||||
respondOk(jinglePacket);
|
||||
terminateTransport();
|
||||
sendSessionTerminate(Reason.of(e), e.getMessage());
|
||||
return;
|
||||
}
|
||||
|
@ -708,6 +712,7 @@ public class JingleFileTransferConnection extends AbstractJingleConnection
|
|||
} else if (transportInfo
|
||||
instanceof SocksByteStreamsTransportInfo.CandidateUsed candidateUsed) {
|
||||
if (!socksBytestreamsTransport.setCandidateUsed(candidateUsed.cid)) {
|
||||
terminateTransport();
|
||||
sendSessionTerminate(
|
||||
Reason.FAILED_TRANSPORT,
|
||||
String.format(
|
||||
|
@ -734,6 +739,7 @@ public class JingleFileTransferConnection extends AbstractJingleConnection
|
|||
id.account.getJid().asBareJid() + ": improperly formatted contents",
|
||||
Throwables.getRootCause(e));
|
||||
respondOk(jinglePacket);
|
||||
terminateTransport();
|
||||
sendSessionTerminate(Reason.of(e), e.getMessage());
|
||||
return;
|
||||
}
|
||||
|
@ -843,8 +849,9 @@ public class JingleFileTransferConnection extends AbstractJingleConnection
|
|||
if (transport == null) {
|
||||
return;
|
||||
}
|
||||
// TODO consider setting transport callback to null. requires transport to handle null callback
|
||||
//transport.setTransportCallback(null);
|
||||
// TODO consider setting transport callback to null. requires transport to handle null
|
||||
// callback
|
||||
// transport.setTransportCallback(null);
|
||||
transport.terminate();
|
||||
this.transport = null;
|
||||
}
|
||||
|
@ -875,8 +882,12 @@ public class JingleFileTransferConnection extends AbstractJingleConnection
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Throwable throwable) {
|
||||
onFileTransmissionFailed(throwable);
|
||||
public void onFailure(@NonNull final Throwable throwable) {
|
||||
// The state transition in here should be synchronized to not race with the
|
||||
// state transition in receiveSessionTerminate
|
||||
synchronized (JingleFileTransferConnection.this) {
|
||||
onFileTransmissionFailed(throwable);
|
||||
}
|
||||
}
|
||||
},
|
||||
MoreExecutors.directExecutor());
|
||||
|
|
Loading…
Reference in a new issue