From c43a4b4fc1f3342656878959f47a2cbb02702f5d Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Mon, 12 Mar 2012 10:48:24 +0100 Subject: [PATCH 1/3] sleep for 2 seconds before trying to connect skype using dbus and try it repeatedly when skype refuses to authenticate spectrum --- backends/skype/main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backends/skype/main.cpp b/backends/skype/main.cpp index 54e7025e..23ac6825 100644 --- a/backends/skype/main.cpp +++ b/backends/skype/main.cpp @@ -473,6 +473,7 @@ void Skype::login() { } } + sleep(2); m_timer = g_timeout_add_seconds(1, create_dbus_proxy, this); } @@ -499,7 +500,7 @@ bool Skype::loadSkypeBuddies() { return FALSE; } - if (re.empty() || re == "CONNSTATUS OFFLINE") { + if (re.empty() || re == "CONNSTATUS OFFLINE" || re == "ERROR 68") { return TRUE; } From 4c1285a8e1da653e3012ed12b37b6c4b41c22312 Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Mon, 12 Mar 2012 14:02:09 +0100 Subject: [PATCH 2/3] log sent messages --- backends/skype/main.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/backends/skype/main.cpp b/backends/skype/main.cpp index 23ac6825..988a2ad1 100644 --- a/backends/skype/main.cpp +++ b/backends/skype/main.cpp @@ -430,6 +430,7 @@ void Skype::login() { "\n"; g_file_set_contents(std::string(std::string("/tmp/skype/") + m_username + "/" + m_username +"/config.xml").c_str(), config_xml.c_str(), -1, NULL); + sleep(1); std::string db_path = std::string("/tmp/skype/") + m_username; char *db = (char *) malloc(db_path.size() + 1); strcpy(db, db_path.c_str()); @@ -473,7 +474,7 @@ void Skype::login() { } } - sleep(2); + sleep(1); m_timer = g_timeout_add_seconds(1, create_dbus_proxy, this); } @@ -602,6 +603,7 @@ std::string Skype::send_command(const std::string &message) { // int message_num; // gchar error_return[30]; + LOG4CXX_INFO(logger, "Sending: " << message); if (!dbus_g_proxy_call (m_proxy, "Invoke", &error, G_TYPE_STRING, message.c_str(), G_TYPE_INVALID, G_TYPE_STRING, &str, G_TYPE_INVALID)) { From 1846c3953d39471a3975253d0224bf5151bcb370 Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Tue, 13 Mar 2012 09:52:28 +0100 Subject: [PATCH 3/3] Fixed skype hopeful --- backends/skype/main.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/backends/skype/main.cpp b/backends/skype/main.cpp index 988a2ad1..dd8031d4 100644 --- a/backends/skype/main.cpp +++ b/backends/skype/main.cpp @@ -82,7 +82,7 @@ static pbnetwork::StatusType getStatus(const std::string &st) { class Skype { public: Skype(const std::string &user, const std::string &username, const std::string &password); - ~Skype() { logout(); } + ~Skype() { LOG4CXX_INFO(logger, "Skype instance desctuctor"); logout(); } void login(); void logout(); std::string send_command(const std::string &message); @@ -159,6 +159,7 @@ class SpectrumNetworkPlugin : public NetworkPlugin { void handleLogoutRequest(const std::string &user, const std::string &legacyName) { Skype *skype = m_sessions[user]; if (skype) { + LOG4CXX_INFO(logger, "User wants to logout, logging out"); skype->logout(); exit(1); } @@ -361,6 +362,7 @@ bool Skype::createDBusProxy() { LOG4CXX_INFO(logger, m_username << ":" << error->message); if (m_counter == 15) { + LOG4CXX_ERROR(logger, "Logging out, proxy couldn't be created"); np->handleDisconnected(m_user, 0, error->message); logout(); g_error_free(error); @@ -483,18 +485,19 @@ bool Skype::loadSkypeBuddies() { // while (re == "CONNSTATUS OFFLINE" || re.empty()) { // sleep(1); - gchar buffer[1024]; - int bytes_read = read(fd_output, buffer, 1023); - if (bytes_read > 0) { - buffer[bytes_read] = 0; - np->handleDisconnected(m_user, 0, buffer); - close(fd_output); - logout(); - return FALSE; - } +// gchar buffer[1024]; +// int bytes_read = read(fd_output, buffer, 1023); +// if (bytes_read > 0) { +// buffer[bytes_read] = 0; +// np->handleDisconnected(m_user, 0, buffer); +// close(fd_output); +// logout(); +// return FALSE; +// } std::string re = send_command("NAME Spectrum"); if (m_counter++ > 15) { + LOG4CXX_ERROR(logger, "Logging out, because we tried to connect the Skype over DBUS 15 times without success"); np->handleDisconnected(m_user, 0, ""); close(fd_output); logout(); @@ -508,6 +511,7 @@ bool Skype::loadSkypeBuddies() { close(fd_output); if (send_command("PROTOCOL 7") != "PROTOCOL 7") { + LOG4CXX_ERROR(logger, "PROTOCOL 7 failed, logging out"); np->handleDisconnected(m_user, 0, "Skype is not ready"); logout(); return FALSE;