Merge branch 'master' into development
This commit is contained in:
		
						commit
						9edcca1045
					
				| @ -101,6 +101,9 @@ public class ScramSha1 extends SaslMechanism { | ||||
| 	public String getResponse(final String challenge) throws AuthenticationException { | ||||
| 		switch (state) { | ||||
| 			case AUTH_TEXT_SENT: | ||||
| 				if (challenge == null) { | ||||
| 					throw new AuthenticationException("challenge can not be null"); | ||||
| 				} | ||||
| 				serverFirstMessage = Base64.decode(challenge, Base64.DEFAULT); | ||||
| 				final Tokenizer tokenizer = new Tokenizer(serverFirstMessage); | ||||
| 				String nonce = ""; | ||||
|  | ||||
| @ -358,11 +358,7 @@ public class FileBackend { | ||||
| 					file.delete(); | ||||
| 					return false; | ||||
| 				} | ||||
| 			} catch (FileNotFoundException e) { | ||||
| 				return false; | ||||
| 			} catch (IOException e) { | ||||
| 				return false; | ||||
| 			} catch (NoSuchAlgorithmException e) { | ||||
| 			} catch (IllegalArgumentException | IOException | NoSuchAlgorithmException e) { | ||||
| 				return false; | ||||
| 			} finally { | ||||
| 				close(os); | ||||
|  | ||||
| @ -150,7 +150,6 @@ public class XmppConnection implements Runnable { | ||||
| 			shouldAuthenticate = shouldBind = !account.isOptionSet(Account.OPTION_REGISTER); | ||||
| 			tagReader = new XmlReader(wakeLock); | ||||
| 			tagWriter = new TagWriter(); | ||||
| 			packetCallbacks.clear(); | ||||
| 			this.changeStatus(Account.State.CONNECTING); | ||||
| 			if (DNSHelper.isIp(account.getServer().toString())) { | ||||
| 				socket = new Socket(); | ||||
| @ -197,10 +196,7 @@ public class XmppConnection implements Runnable { | ||||
| 							socket = new Socket(); | ||||
| 							socket.connect(addr, Config.SOCKET_TIMEOUT * 1000); | ||||
| 							socketError = false; | ||||
| 						} catch (final UnknownHostException e) { | ||||
| 							Log.d(Config.LOGTAG, account.getJid().toBareJid().toString() + ": " + e.getMessage()); | ||||
| 							i++; | ||||
| 						} catch (final IOException e) { | ||||
| 						} catch (final Throwable e) { | ||||
| 							Log.d(Config.LOGTAG, account.getJid().toBareJid().toString() + ": " + e.getMessage()); | ||||
| 							i++; | ||||
| 						} | ||||
| @ -470,26 +466,28 @@ public class XmppConnection implements Runnable { | ||||
| 				this.jingleListener.onJinglePacketReceived(account,(JinglePacket) packet); | ||||
| 			} | ||||
| 		} else { | ||||
| 			if (packetCallbacks.containsKey(packet.getId())) { | ||||
| 				final Pair<IqPacket, OnIqPacketReceived> packetCallbackDuple = packetCallbacks.get(packet.getId()); | ||||
| 				// Packets to the server should have responses from the server | ||||
| 				if (packetCallbackDuple.first.toServer(account)) { | ||||
| 					if (packet.fromServer(account)) { | ||||
| 						packetCallbackDuple.second.onIqPacketReceived(account, packet); | ||||
| 						packetCallbacks.remove(packet.getId()); | ||||
| 			synchronized (this.packetCallbacks) { | ||||
| 				if (packetCallbacks.containsKey(packet.getId())) { | ||||
| 					final Pair<IqPacket, OnIqPacketReceived> packetCallbackDuple = packetCallbacks.get(packet.getId()); | ||||
| 					// Packets to the server should have responses from the server | ||||
| 					if (packetCallbackDuple.first.toServer(account)) { | ||||
| 						if (packet.fromServer(account)) { | ||||
| 							packetCallbackDuple.second.onIqPacketReceived(account, packet); | ||||
| 							packetCallbacks.remove(packet.getId()); | ||||
| 						} else { | ||||
| 							Log.e(Config.LOGTAG, account.getJid().toBareJid().toString() + ": ignoring spoofed iq packet"); | ||||
| 						} | ||||
| 					} else { | ||||
| 						Log.e(Config.LOGTAG,account.getJid().toBareJid().toString()+": ignoring spoofed iq packet"); | ||||
| 					} | ||||
| 				} else { | ||||
| 					if (packet.getFrom().equals(packetCallbackDuple.first.getTo())) { | ||||
| 						packetCallbackDuple.second.onIqPacketReceived(account, packet); | ||||
| 						packetCallbacks.remove(packet.getId()); | ||||
| 					} else { | ||||
| 						Log.e(Config.LOGTAG,account.getJid().toBareJid().toString()+": ignoring spoofed iq packet"); | ||||
| 						if (packet.getFrom().equals(packetCallbackDuple.first.getTo())) { | ||||
| 							packetCallbackDuple.second.onIqPacketReceived(account, packet); | ||||
| 							packetCallbacks.remove(packet.getId()); | ||||
| 						} else { | ||||
| 							Log.e(Config.LOGTAG, account.getJid().toBareJid().toString() + ": ignoring spoofed iq packet"); | ||||
| 						} | ||||
| 					} | ||||
| 				} else if (packet.getType() == IqPacket.TYPE.GET || packet.getType() == IqPacket.TYPE.SET) { | ||||
| 					this.unregisteredIqListener.onIqPacketReceived(account, packet); | ||||
| 				} | ||||
| 			} else if (packet.getType() == IqPacket.TYPE.GET|| packet.getType() == IqPacket.TYPE.SET) { | ||||
| 				this.unregisteredIqListener.onIqPacketReceived(account, packet); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| @ -720,13 +718,15 @@ public class XmppConnection implements Runnable { | ||||
| 	} | ||||
| 
 | ||||
| 	private void clearIqCallbacks() { | ||||
| 		Log.d(Config.LOGTAG,account.getJid().toBareJid()+": clearing iq iq callbacks"); | ||||
| 		Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": clearing iq iq callbacks"); | ||||
| 		final IqPacket failurePacket = new IqPacket(IqPacket.TYPE.ERROR); | ||||
| 		Iterator<Entry<String, Pair<IqPacket, OnIqPacketReceived>>> iterator = this.packetCallbacks.entrySet().iterator(); | ||||
| 		while(iterator.hasNext()) { | ||||
| 			Entry<String, Pair<IqPacket, OnIqPacketReceived>> entry = iterator.next(); | ||||
| 			entry.getValue().second.onIqPacketReceived(account,failurePacket); | ||||
| 			iterator.remove(); | ||||
| 		synchronized (this.packetCallbacks) { | ||||
| 			Iterator<Entry<String, Pair<IqPacket, OnIqPacketReceived>>> iterator = this.packetCallbacks.entrySet().iterator(); | ||||
| 			while (iterator.hasNext()) { | ||||
| 				Entry<String, Pair<IqPacket, OnIqPacketReceived>> entry = iterator.next(); | ||||
| 				entry.getValue().second.onIqPacketReceived(account, failurePacket); | ||||
| 				iterator.remove(); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| @ -899,7 +899,9 @@ public class XmppConnection implements Runnable { | ||||
| 			packet.setAttribute("id", id); | ||||
| 		} | ||||
| 		if (callback != null) { | ||||
| 			packetCallbacks.put(packet.getId(), new Pair<>(packet, callback)); | ||||
| 			synchronized (this.packetCallbacks) { | ||||
| 				packetCallbacks.put(packet.getId(), new Pair<>(packet, callback)); | ||||
| 			} | ||||
| 		} | ||||
| 		this.sendPacket(packet); | ||||
| 	} | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch