Changeset - ddee629fe419
[Not reviewed]
0 3 0
Jan Kaluza - 9 years ago 2016-02-04 08:09:37
jkaluza@redhat.com
Libtransport: Fix crash in avatar handling code when storage backend is not set. Add extended_test for avatars using libpurple backend
3 files changed with 16 insertions and 9 deletions:
0 comments (0 inline, 0 general)
libtransport/User.cpp
Show inline comments
 
@@ -59,12 +59,13 @@ User::User(const Swift::JID &jid, UserInfo &userInfo, Component *component, User
 
	m_connected = false;
 
	m_readyForConnect = false;
 
	m_ignoreDisconnect = false;
 
	m_resources = 0;
 
	m_reconnectCounter = 0;
 
	m_reconnectLimit = 3;
 
	m_storageBackend = NULL;
 

	
 
	m_reconnectTimer = m_component->getNetworkFactories()->getTimerFactory()->createTimer(5000);
 
	m_reconnectTimer->onTick.connect(boost::bind(&User::onConnectingTimeout, this)); 
 

	
 
	m_rosterManager = component->getFrontend()->createRosterManager(this, m_component);
 
	m_conversationManager = new ConversationManager(this, m_component);
 
@@ -170,23 +171,25 @@ void User::leaveRoom(const std::string &room) {
 
	}
 
}
 

	
 
void User::handlePresence(Swift::Presence::ref presence, bool forceJoin) {
 
	LOG4CXX_INFO(logger, "PRESENCE " << presence->getFrom().toString() << " " << presence->getTo().toString());
 

	
 
	if (m_storageBackend) {
 
		boost::shared_ptr<Swift::VCardUpdate> vcardUpdate = presence->getPayload<Swift::VCardUpdate>();
 
		if (vcardUpdate) {
 
			std::string value = "";
 
			int type = (int) TYPE_STRING;
 
	boost::shared_ptr<Swift::VCardUpdate> vcardUpdate = presence->getPayload<Swift::VCardUpdate>();
 
	if (vcardUpdate) {
 
		std::string value = "";
 
		int type = (int) TYPE_STRING;
 
		if (m_storageBackend) {
 
			m_storageBackend->getUserSetting(m_userInfo.id, "photohash", type, value);
 
			if (value != vcardUpdate->getPhotoHash()) {
 
				LOG4CXX_INFO(logger, m_jid.toString() << ": Requesting VCard")
 
		}
 
		if (value != vcardUpdate->getPhotoHash()) {
 
			LOG4CXX_INFO(logger, m_jid.toString() << ": Requesting VCard")
 
			if (m_storageBackend) {
 
				m_storageBackend->updateUserSetting(m_userInfo.id, "photohash", vcardUpdate->getPhotoHash());
 
				requestVCard();
 
			}
 
			requestVCard();
 
		}
 
	}
 

	
 
	if (!m_connected) {
 
		// we are not connected to legacy network, so we should do it when disco#info arrive :)
 
		if (m_readyForConnect == false) {
spectrum/src/frontends/xmpp/vcardresponder.cpp
Show inline comments
 
@@ -104,13 +104,13 @@ bool VCardResponder::handleGetRequest(const Swift::JID& from, const Swift::JID&
 
	m_queries[m_id].received = time(NULL);
 
	onVCardRequired(user, name, m_id++);
 
	return true;
 
}
 

	
 
bool VCardResponder::handleSetRequest(const Swift::JID& from, const Swift::JID& to, const std::string& id, boost::shared_ptr<Swift::VCard> payload) {
 
	if (!to.getNode().empty()) {
 
	if (!to.getNode().empty() && from.toBare().toString() != to.toBare().toString()) {
 
		LOG4CXX_WARN(logger, from.toBare().toString() << ": Tried to set VCard of somebody else");
 
		return false;
 
	}
 

	
 
	User *user = m_userManager->getUser(from.toBare().toString());
 
	if (!user) {
tests/start.py
Show inline comments
 
@@ -43,12 +43,14 @@ class BaseTest:
 
		time.sleep(1)
 

	
 
		responder = Responder(self.responder_jid, self.responder_password, self.responder_room, self.responder_roompassword, self.responder_nick)
 
		responder.register_plugin('xep_0030')  # Service Discovery
 
		responder.register_plugin('xep_0045')  # Multi-User Chat
 
		responder.register_plugin('xep_0199')  # XMPP Ping
 
		responder.register_plugin('xep_0153')
 
		responder.register_plugin('xep_0054')
 
		responder['feature_mechanisms'].unencrypted_plain = True
 

	
 
		to = ("127.0.0.1", 5223)
 
		if self.responder_password != "password":
 
			to = ()
 
		if responder.connect(to):
 
@@ -60,12 +62,14 @@ class BaseTest:
 
			sys.exit(1)
 

	
 
		client = Client(self.client_jid, self.client_password, self.client_room, self.client_nick)
 
		client.register_plugin('xep_0030')  # Service Discovery
 
		client.register_plugin('xep_0045')  # Multi-User Chat
 
		client.register_plugin('xep_0199')  # XMPP Ping
 
		client.register_plugin('xep_0153')
 
		client.register_plugin('xep_0054')
 
		client['feature_mechanisms'].unencrypted_plain = True
 

	
 
		time.sleep(2)
 

	
 
		to = ("127.0.0.1", 5223)
 
		if self.responder_password != "password":
0 comments (0 inline, 0 general)