From 2836f390b953295fe40f21e9e69f238d6a2846dc Mon Sep 17 00:00:00 2001 From: HanzZ Date: Sun, 19 Jun 2011 20:40:27 +0200 Subject: [PATCH] Receive VCard from PurpleAccount and fixed crash on disconnect --- backends/libpurple/main.cpp | 12 +++++++++++- include/Swiften/Server/Server.cpp | 4 +++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/backends/libpurple/main.cpp b/backends/libpurple/main.cpp index 17ad5fb6..80f5c7bd 100644 --- a/backends/libpurple/main.cpp +++ b/backends/libpurple/main.cpp @@ -695,13 +695,23 @@ static void *notify_user_info(PurpleConnection *gc, const char *who, PurpleNotif if (displayname) { nickname = displayname; } + + // avatar + PurpleStoredImage *avatar = purple_buddy_icons_find_account_icon(account); + if (avatar) { + const gchar * data = (const gchar *) purple_imgstore_get_data(avatar); + size_t len = purple_imgstore_get_size(avatar); + if (len < 300000 && data) { + photo = Swift::createByteArray(data, len); + } + } } if ((!firstName.empty() || !lastName.empty()) && fullName.empty()) fullName = firstName + " " + lastName; PurpleBuddy *buddy = purple_find_buddy(purple_connection_get_account(gc), who); - if (buddy) { + if (buddy && photo.size() == 0) { gsize len; PurpleBuddyIcon *icon = NULL; icon = purple_buddy_icons_find(purple_connection_get_account(gc), name.c_str()); diff --git a/include/Swiften/Server/Server.cpp b/include/Swiften/Server/Server.cpp index 09ba25a8..c959589e 100644 --- a/include/Swiften/Server/Server.cpp +++ b/include/Swiften/Server/Server.cpp @@ -57,7 +57,9 @@ Server::~Server() { } void Server::start() { - assert(!serverFromClientConnectionServer); + if (serverFromClientConnectionServer) { + return; + } serverFromClientConnectionServer = networkFactories_->getConnectionServerFactory()->createConnectionServer(port_); serverFromClientConnectionServerSignalConnections.push_back( serverFromClientConnectionServer->onNewConnection.connect(