diff --git a/build/resources/META-INF/smack.providers b/build/resources/META-INF/smack.providers
index 8033f7676..98867a4fa 100644
--- a/build/resources/META-INF/smack.providers
+++ b/build/resources/META-INF/smack.providers
@@ -121,13 +121,6 @@
org.jivesoftware.smackx.packet.OfflineMessageInfo$Provider
-
-
- bind
- urn:ietf:params:xml:ns:xmpp-bind
- org.jivesoftware.smack.packet.Bind$Provider
-
-
query
diff --git a/source/org/jivesoftware/smack/PacketReader.java b/source/org/jivesoftware/smack/PacketReader.java
index 4167719bd..31c9fc136 100644
--- a/source/org/jivesoftware/smack/PacketReader.java
+++ b/source/org/jivesoftware/smack/PacketReader.java
@@ -29,8 +29,8 @@ import org.xmlpull.mxp1.MXParser;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
-import java.util.*;
import java.io.IOException;
+import java.util.*;
/**
* Listens for XML traffic from the XMPP server and parses it into packet objects.
@@ -585,6 +585,10 @@ class PacketReader {
else if (elementName.equals("query") && namespace.equals("jabber:iq:register")) {
iqPacket = parseRegistration(parser);
}
+ else if (elementName.equals("bind") &&
+ namespace.equals("urn:ietf:params:xml:ns:xmpp-bind")) {
+ iqPacket = parseResourceBinding(parser);
+ }
// Otherwise, see if there is a registered provider for
// this element name and namespace.
else {
@@ -756,6 +760,29 @@ class PacketReader {
return registration;
}
+ private Bind parseResourceBinding(XmlPullParser parser) throws IOException,
+ XmlPullParserException {
+ Bind bind = new Bind();
+ boolean done = false;
+ while (!done) {
+ int eventType = parser.next();
+ if (eventType == XmlPullParser.START_TAG) {
+ if (parser.getName().equals("resource")) {
+ bind.setResource(parser.nextText());
+ }
+ else if (parser.getName().equals("jid")) {
+ bind.setJid(parser.nextText());
+ }
+ } else if (eventType == XmlPullParser.END_TAG) {
+ if (parser.getName().equals("bind")) {
+ done = true;
+ }
+ }
+ }
+
+ return bind;
+ }
+
/**
* A wrapper class to associate a packet collector with a listener.
*/
diff --git a/source/org/jivesoftware/smack/packet/Bind.java b/source/org/jivesoftware/smack/packet/Bind.java
index b913c9c5b..9d589b921 100644
--- a/source/org/jivesoftware/smack/packet/Bind.java
+++ b/source/org/jivesoftware/smack/packet/Bind.java
@@ -20,9 +20,6 @@
package org.jivesoftware.smack.packet;
-import org.jivesoftware.smack.provider.IQProvider;
-import org.xmlpull.v1.XmlPullParser;
-
/**
* IQ packet used by Smack to bind a resource and to obtain the jid assigned by the server.
* There are two ways to bind a resource. One is simply sending an empty Bind packet where the
@@ -71,29 +68,4 @@ public class Bind extends IQ {
buf.append("");
return buf.toString();
}
-
- public static class Provider implements IQProvider {
-
- public IQ parseIQ(XmlPullParser parser) throws Exception {
- Bind bind = new Bind();
- boolean done = false;
- while (!done) {
- int eventType = parser.next();
- if (eventType == XmlPullParser.START_TAG) {
- if (parser.getName().equals("resource")) {
- bind.setResource(parser.nextText());
- }
- else if (parser.getName().equals("jid")) {
- bind.setJid(parser.nextText());
- }
- } else if (eventType == XmlPullParser.END_TAG) {
- if (parser.getName().equals("bind")) {
- done = true;
- }
- }
- }
-
- return bind;
- }
- }
}