fixed #63
This commit is contained in:
parent
a04d736f75
commit
e29ce19f20
|
@ -287,7 +287,11 @@ public class XmppConnectionService extends Service {
|
||||||
} else {
|
} else {
|
||||||
Contact contact = findContact(account, fromParts[0]);
|
Contact contact = findContact(account, fromParts[0]);
|
||||||
if (contact == null) {
|
if (contact == null) {
|
||||||
|
if ("subscribe".equals(type)) {
|
||||||
|
account.getXmppConnection().addPendingSubscription(fromParts[0]);
|
||||||
|
} else {
|
||||||
Log.d(LOGTAG,packet.getFrom()+ " could not be found");
|
Log.d(LOGTAG,packet.getFrom()+ " could not be found");
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (type == null) {
|
if (type == null) {
|
||||||
|
@ -343,7 +347,7 @@ public class XmppConnectionService extends Service {
|
||||||
requestPresenceUpdatesFrom(contact);
|
requestPresenceUpdatesFrom(contact);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// TODO: ask user to handle it maybe
|
account.getXmppConnection().addPendingSubscription(fromParts[0]);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//Log.d(LOGTAG, packet.toString());
|
//Log.d(LOGTAG, packet.toString());
|
||||||
|
@ -1232,6 +1236,10 @@ public class XmppConnectionService extends Service {
|
||||||
account.getXmppConnection().sendIqPacket(iq, null);
|
account.getXmppConnection().sendIqPacket(iq, null);
|
||||||
if (autoGrant) {
|
if (autoGrant) {
|
||||||
requestPresenceUpdatesFrom(contact);
|
requestPresenceUpdatesFrom(contact);
|
||||||
|
if (account.getXmppConnection().hasPendingSubscription(contact.getJid())) {
|
||||||
|
Log.d("xmppService","contact had pending subscription");
|
||||||
|
sendPresenceUpdatesTo(contact);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
replaceContactInConversation(contact.getJid(), contact);
|
replaceContactInConversation(contact.getJid(), contact);
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,6 +77,8 @@ public class XmppConnection implements Runnable {
|
||||||
private Element streamFeatures;
|
private Element streamFeatures;
|
||||||
private HashMap<String, List<String>> disco = new HashMap<String, List<String>>();
|
private HashMap<String, List<String>> disco = new HashMap<String, List<String>>();
|
||||||
|
|
||||||
|
private HashSet<String> pendingSubscriptions = new HashSet<String>();
|
||||||
|
|
||||||
private String streamId = null;
|
private String streamId = null;
|
||||||
private int smVersion = 3;
|
private int smVersion = 3;
|
||||||
|
|
||||||
|
@ -904,4 +906,13 @@ public class XmppConnection implements Runnable {
|
||||||
public String getMucServer() {
|
public String getMucServer() {
|
||||||
return findDiscoItemByFeature("http://jabber.org/protocol/muc");
|
return findDiscoItemByFeature("http://jabber.org/protocol/muc");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasPendingSubscription(String jid) {
|
||||||
|
return this.pendingSubscriptions.contains(jid);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addPendingSubscription(String jid) {
|
||||||
|
Log.d(LOGTAG,"adding "+jid+" to pending subscriptions");
|
||||||
|
this.pendingSubscriptions.add(jid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue