aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2019-08-31 15:47:29 +0200
committerChristian Schneppe <christian@pix-art.de>2019-08-31 15:47:29 +0200
commit506b09282104d1272295a662b9af7f5db8ab9bc4 (patch)
tree8f9d9b556d90b4e877868475a510084f5532518a
parent987744bb2546d3df2c083f34b1c6b8a12453db1b (diff)
more ibb fixes (include sid in transport-accept)
-rw-r--r--src/main/java/de/pixart/messenger/xmpp/jingle/JingleConnection.java34
-rw-r--r--src/main/java/de/pixart/messenger/xmpp/jingle/JingleInbandTransport.java6
2 files changed, 25 insertions, 15 deletions
diff --git a/src/main/java/de/pixart/messenger/xmpp/jingle/JingleConnection.java b/src/main/java/de/pixart/messenger/xmpp/jingle/JingleConnection.java
index 7982cfeea..30ca27391 100644
--- a/src/main/java/de/pixart/messenger/xmpp/jingle/JingleConnection.java
+++ b/src/main/java/de/pixart/messenger/xmpp/jingle/JingleConnection.java
@@ -658,9 +658,13 @@ public class JingleConnection implements Transferable {
} else if (content.hasIbbTransport()) {
String receivedBlockSize = packet.getJingleContent().ibbTransport().getAttribute("block-size");
if (receivedBlockSize != null) {
- int bs = Integer.parseInt(receivedBlockSize);
- if (bs > this.ibbBlockSize) {
- this.ibbBlockSize = bs;
+ try {
+ int bs = Integer.parseInt(receivedBlockSize);
+ if (bs > this.ibbBlockSize) {
+ this.ibbBlockSize = bs;
+ }
+ } catch (Exception e) {
+ Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": unable to parse block size in session-accept");
}
}
this.transport = new JingleInbandTransport(this, this.transportId, this.ibbBlockSize);
@@ -847,12 +851,16 @@ public class JingleConnection implements Transferable {
private boolean receiveFallbackToIbb(JinglePacket packet) {
- Log.d(Config.LOGTAG, "receiving fallack to ibb");
+ Log.d(Config.LOGTAG, "receiving fallback to ibb");
final String receivedBlockSize = packet.getJingleContent().ibbTransport().getAttribute("block-size");
if (receivedBlockSize != null) {
- final int bs = Integer.parseInt(receivedBlockSize);
- if (bs < this.ibbBlockSize) {
- this.ibbBlockSize = bs;
+ try {
+ final int bs = Integer.parseInt(receivedBlockSize);
+ if (bs < this.ibbBlockSize) {
+ this.ibbBlockSize = bs;
+ }
+ } catch (NumberFormatException e) {
+ Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": unable to parse block size in transport-replace");
}
}
this.transportId = packet.getJingleContent().getTransportId();
@@ -861,8 +869,8 @@ public class JingleConnection implements Transferable {
final JinglePacket answer = bootstrapPacket("transport-accept");
final Content content = new Content(contentCreator, contentName);
- content.setFileOffer(fileOffer, ftVersion);
content.ibbTransport().setAttribute("block-size", this.ibbBlockSize);
+ content.ibbTransport().setAttribute("sid", this.transportId);
answer.setContent(content);
@@ -885,9 +893,13 @@ public class JingleConnection implements Transferable {
String receivedBlockSize = packet.getJingleContent().ibbTransport()
.getAttribute("block-size");
if (receivedBlockSize != null) {
- int bs = Integer.parseInt(receivedBlockSize);
- if (bs > this.ibbBlockSize) {
- this.ibbBlockSize = bs;
+ try {
+ int bs = Integer.parseInt(receivedBlockSize);
+ if (bs < this.ibbBlockSize) {
+ this.ibbBlockSize = bs;
+ }
+ } catch (NumberFormatException e) {
+ Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": unable to parse block size in transport-accept");
}
}
this.transport = new JingleInbandTransport(this, this.transportId, this.ibbBlockSize);
diff --git a/src/main/java/de/pixart/messenger/xmpp/jingle/JingleInbandTransport.java b/src/main/java/de/pixart/messenger/xmpp/jingle/JingleInbandTransport.java
index f3e7cc814..72a9142ec 100644
--- a/src/main/java/de/pixart/messenger/xmpp/jingle/JingleInbandTransport.java
+++ b/src/main/java/de/pixart/messenger/xmpp/jingle/JingleInbandTransport.java
@@ -176,12 +176,10 @@ public class JingleInbandTransport extends JingleTransport {
this.account.getXmppConnection().sendIqPacket(iq, this.onAckReceived);
this.account.getXmppConnection().r(); //don't fill up stanza queue too much
this.seq++;
- if (this.remainingSize > 0) {
- connection.updateProgress((int) ((((double) (this.fileSize - this.remainingSize)) / this.fileSize) * 100));
- } else {
+ connection.updateProgress((int) ((((double) (this.fileSize - this.remainingSize)) / this.fileSize) * 100));
+ if (this.remainingSize <= 0) {
sendClose();
file.setSha1Sum(digest.digest());
- Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": sendNextBlock() remaining size");
this.onFileTransmissionStatusChanged.onFileTransmitted(file);
fileInputStream.close();
}