diff options
author | Eion Robb <eion@robbmob.com> | 2013-04-19 12:39:16 +0400 |
---|---|---|
committer | Eion Robb <eion@robbmob.com> | 2013-04-19 12:39:16 +0400 |
commit | e073f621c71c48ae0d5b8178df6a901faad3b26e (patch) | |
tree | c7706e201766e0d816d64c9b297469b488b9cd92 | |
parent | c06fd1f9b69c64e023451b6963bf0c0f7e2f897b (diff) |
Fix for crash during reconnect, also handle version of Skype changing between reconnects
-rw-r--r-- | libskype.c | 19 |
1 files changed, 14 insertions, 5 deletions
@@ -1779,16 +1779,25 @@ skype_login_part2(PurpleAccount *acct) //sync buddies after everything else has finished loading purple_timeout_add_seconds(1, (GSourceFunc)skype_set_buddies, (gpointer)acct); - if (!missedmessagestimout) + if (TRUE) { - gint version_int; + gint version_int = 0; + gchar *versionpos; gchar *temp = skype_send_message("GET SKYPEVERSION"); gchar *version = g_strdup(&temp[13]); g_free(temp); - *strchr(version, '.') = '\0'; - version_int = atoi(version); - if (version_int >= 5) + versionpos = strchr(version, '.'); + if (versionpos) + { + *versionpos = '\0'; + version_int = atoi(version); + } + if (version_int >= 5 && !missedmessagestimout) { missedmessagestimout = purple_timeout_add_seconds(10, (GSourceFunc)skype_check_missedmessages, (gpointer)acct); + } else if (version_int < 5 && missedmessagestimout) { + purple_timeout_remove(missedmessagestimout); + missedmessagestimout = 0; + } g_free(version); } |