diff options
Diffstat (limited to 'kopete/protocols/jabber')
| -rw-r--r-- | kopete/protocols/jabber/libiris/iris/xmpp-im/client.cpp | 33 | ||||
| -rw-r--r-- | kopete/protocols/jabber/libiris/iris/xmpp-im/xmpp_tasks.h | 50 | 
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  | 
