Do not try to destroy a NULL session after an unsuccesful NNTP connect attempt.
[claws.git] / src / news.c
index 508495d8ff4203b158c36683bb0f2a2f6169c40d..7f2e00cf6c1fed766756d57b72b93dd927cbd40a 100644 (file)
@@ -351,8 +351,9 @@ static Session *news_session_new(Folder *folder, const gchar *server, gushort po
                r = nntp_threaded_connect(folder, server, port);
        
        if (r != NEWSNNTP_NO_ERROR) {
-               log_error(LOG_PROTOCOL, _("Error logging in to %s:%d ...\n"), server, port);
-               session_destroy(SESSION(session));
+               log_error(LOG_PROTOCOL, _("Error logging in to %s:%d...\n"), server, port);
+               if (session != NULL)
+                       session_destroy(SESSION(session));
                return NULL;
        }
 
@@ -443,7 +444,8 @@ static Session *news_session_new_for_folder(Folder *folder)
            else {
                /* An error state bail out */
                log_error(LOG_PROTOCOL, _("Error creating session with %s:%d\n"), ac->nntp_server, port);
-               session_destroy(SESSION(session));
+               if (session != NULL)
+                       session_destroy(SESSION(session));
                g_free(passwd);
                if (ac->session_passwd) {
                        g_free(ac->session_passwd);
@@ -456,7 +458,7 @@ static Session *news_session_new_for_folder(Folder *folder)
        if ((session != NULL) && ac->use_nntp_auth) { /* FIXME:  && ac->use_nntp_auth_onconnect */
                if (nntp_threaded_login(folder, userid, passwd) !=
                        NEWSNNTP_NO_ERROR) {
-                       log_error(LOG_PROTOCOL, _("Error authenticating to %s:%d ...\n"), ac->nntp_server, port);
+                       log_error(LOG_PROTOCOL, _("Error authenticating to %s:%d...\n"), ac->nntp_server, port);
                        session_destroy(SESSION(session));
                        g_free(passwd);
                        if (ac->session_passwd) {
@@ -799,9 +801,11 @@ static gint news_get_article(Folder *folder, gint num, gchar *filename)
        r = nntp_threaded_article(folder, num, &result, &len);
        
        if (r == NEWSNNTP_NO_ERROR) {
-               if (str_write_to_file(result, filename) < 0)
+               if (str_write_to_file(result, filename) < 0) {
+                       mmap_string_unref(result);
                        return -1;
-               g_free(result);
+               }
+               mmap_string_unref(result);
        }
        
        return r;