summaryrefslogtreecommitdiffstats
path: root/kopete/protocols/jabber
diff options
context:
space:
mode:
Diffstat (limited to 'kopete/protocols/jabber')
-rw-r--r--kopete/protocols/jabber/libiris/iris/xmpp-im/client.cpp33
-rw-r--r--kopete/protocols/jabber/libiris/iris/xmpp-im/xmpp_tasks.h50
2 files changed, 64 insertions, 19 deletions
diff --git a/kopete/protocols/jabber/libiris/iris/xmpp-im/client.cpp b/kopete/protocols/jabber/libiris/iris/xmpp-im/client.cpp
index 9d5ee471..fcd73029 100644
--- a/kopete/protocols/jabber/libiris/iris/xmpp-im/client.cpp
+++ b/kopete/protocols/jabber/libiris/iris/xmpp-im/client.cpp
@@ -223,6 +223,7 @@ void Client::start(const TQString &host, const TQString &user, const TQString &p
connect(pr, TQT_SIGNAL(roster(const Roster &)), TQT_SLOT(prRoster(const Roster &)));
new JT_ServInfo(rootTask());
+ new PongServer(rootTask());
d->active = true;
}
@@ -1520,3 +1521,35 @@ LiveRoster::ConstIterator LiveRoster::find(const Jid &j, bool compareRes) const
}
}
+
+//----------------------------------------------------------------------------
+// PongServer
+//----------------------------------------------------------------------------
+/**
+ * \class PongServer
+ * \brief Answers XMPP Pings
+ */
+
+PongServer::PongServer(Task *parent)
+:Task(parent)
+{
+}
+
+PongServer::~PongServer()
+{
+}
+
+bool PongServer::take(const TQDomElement &e)
+{
+ if (e.tagName() != "iq" || e.attribute("type") != "get")
+ return false;
+
+ bool found = false;
+ TQDomElement ping = findSubTag(e, "ping", &found);
+ if (found && ping.attribute("xmlns") == "urn:xmpp:ping") {
+ TQDomElement iq = createIQ(doc(), "result", e.attribute("from"), e.attribute("id"));
+ send(iq);
+ return true;
+ }
+ return false;
+}
diff --git a/kopete/protocols/jabber/libiris/iris/xmpp-im/xmpp_tasks.h b/kopete/protocols/jabber/libiris/iris/xmpp-im/xmpp_tasks.h
index 97d68964..9a8041e9 100644
--- a/kopete/protocols/jabber/libiris/iris/xmpp-im/xmpp_tasks.h
+++ b/kopete/protocols/jabber/libiris/iris/xmpp-im/xmpp_tasks.h
@@ -263,7 +263,7 @@ namespace XMPP
const Jid & jid() const;
const VCard & vcard() const;
-
+
void onGo();
bool take(const TQDomElement &x);
@@ -405,15 +405,15 @@ namespace XMPP
public:
JT_DiscoItems(Task *);
~JT_DiscoItems();
-
+
void get(const Jid &, const TQString &node = TQString());
void get(const DiscoItem &);
-
+
const DiscoList &items() const;
-
+
void onGo();
bool take(const TQDomElement &);
-
+
private:
class Private;
Private *d;
@@ -426,17 +426,17 @@ namespace XMPP
public:
JT_DiscoInfo(Task *);
~JT_DiscoInfo();
-
+
void get(const Jid &, const TQString &node = TQString(), const DiscoItem::Identity = DiscoItem::Identity());
void get(const DiscoItem &);
-
+
const DiscoItem &item() const;
const Jid& jid() const;
const TQString& node() const;
-
+
void onGo();
bool take(const TQDomElement &);
-
+
private:
class Private;
Private *d;
@@ -445,16 +445,16 @@ namespace XMPP
class JT_DiscoPublish : public Task
{
Q_OBJECT
- TQ_OBJECT
+ TQ_OBJECT
public:
JT_DiscoPublish(Task *);
~JT_DiscoPublish();
-
+
void set(const Jid &, const DiscoList &);
-
+
void onGo();
bool take(const TQDomElement &);
-
+
private:
class Private;
Private *d;
@@ -463,7 +463,7 @@ namespace XMPP
class JT_MucPresence : public Task
{
Q_OBJECT
- TQ_OBJECT
+ TQ_OBJECT
public:
JT_MucPresence(Task *parent);
~JT_MucPresence();
@@ -480,28 +480,40 @@ namespace XMPP
class Private;
Private *d;
};
-
+
class JT_PrivateStorage : public Task
{
Q_OBJECT
- TQ_OBJECT
+ TQ_OBJECT
public:
JT_PrivateStorage(Task *parent);
~JT_PrivateStorage();
void set(const TQDomElement &);
void get(const TQString &tag, const TQString& xmlns);
-
+
TQDomElement element();
void onGo();
bool take(const TQDomElement &);
-
+
private:
class Private;
Private *d;
};
-
+
+
+ class PongServer : public Task
+ {
+ Q_OBJECT
+ TQ_OBJECT
+ public:
+ PongServer(Task *);
+ ~PongServer();
+
+ bool take(const TQDomElement &);
+ };
+
}
#endif