last things
This commit is contained in:
parent
a72c90282b
commit
98de77db38
1 changed files with 100 additions and 8 deletions
108
src/inc.c
108
src/inc.c
|
@ -262,7 +262,10 @@ static IncProgressDialog *inc_progress_dialog_create(void)
|
|||
GTK_SIGNAL_FUNC(inc_cancel), dialog);
|
||||
gtk_signal_connect(GTK_OBJECT(progress->window), "delete_event",
|
||||
GTK_SIGNAL_FUNC(gtk_true), NULL);
|
||||
manage_window_set_transient(GTK_WINDOW(progress->window));
|
||||
if((prefs_common.receive_dialog == RECVDIALOG_ALWAYS) ||
|
||||
((prefs_common.receive_dialog == RECVDIALOG_WINDOW_ACTIVE) && focus_window)) {
|
||||
manage_window_set_transient(GTK_WINDOW(progress->window));
|
||||
}
|
||||
|
||||
progress_dialog_set_value(progress, 0.0);
|
||||
|
||||
|
@ -401,8 +404,11 @@ static void inc_start(IncProgressDialog *inc_dialog)
|
|||
pass = input_dialog_with_invisible(_("Input password"),
|
||||
message, NULL);
|
||||
g_free(message);
|
||||
manage_window_focus_in(inc_dialog->mainwin->window,
|
||||
NULL, NULL);
|
||||
if((prefs_common.receive_dialog == RECVDIALOG_ALWAYS) ||
|
||||
((prefs_common.receive_dialog == RECVDIALOG_WINDOW_ACTIVE) && focus_window)) {
|
||||
manage_window_focus_in(inc_dialog->mainwin->window,
|
||||
NULL, NULL);
|
||||
}
|
||||
if (pass) {
|
||||
pop3_state->ac_prefs->tmp_pass = g_strdup(pass);
|
||||
pop3_state->pass = pass;
|
||||
|
@ -430,7 +436,10 @@ static void inc_start(IncProgressDialog *inc_dialog)
|
|||
|
||||
if (pop3_state->error_val == PS_AUTHFAIL) {
|
||||
if(!prefs_common.noerrorpanel) {
|
||||
manage_window_focus_in(inc_dialog->dialog->window, NULL, NULL);
|
||||
if((prefs_common.receive_dialog == RECVDIALOG_ALWAYS) ||
|
||||
((prefs_common.receive_dialog == RECVDIALOG_WINDOW_ACTIVE) && focus_window)) {
|
||||
manage_window_focus_in(inc_dialog->dialog->window, NULL, NULL);
|
||||
}
|
||||
alertpanel_error
|
||||
(_("Authorization for %s on %s failed"),
|
||||
pop3_state->user,
|
||||
|
@ -439,8 +448,11 @@ static void inc_start(IncProgressDialog *inc_dialog)
|
|||
}
|
||||
|
||||
statusbar_pop_all();
|
||||
manage_window_focus_in(inc_dialog->mainwin->window, NULL, NULL);
|
||||
|
||||
if((prefs_common.receive_dialog == RECVDIALOG_ALWAYS) ||
|
||||
((prefs_common.receive_dialog == RECVDIALOG_WINDOW_ACTIVE) && focus_window)) {
|
||||
manage_window_focus_in(inc_dialog->mainwin->window, NULL, NULL);
|
||||
}
|
||||
|
||||
folder_item_scan_foreach(pop3_state->folder_table);
|
||||
folderview_update_item_foreach(pop3_state->folder_table);
|
||||
|
||||
|
@ -525,8 +537,13 @@ static IncState inc_pop3_session_do(IncSession *session)
|
|||
atm->num = POP3_GREETING_RECV;
|
||||
|
||||
server = pop3_state->ac_prefs->recv_server;
|
||||
#if USE_SSL
|
||||
port = pop3_state->ac_prefs->set_popport ?
|
||||
pop3_state->ac_prefs->popport : (pop3_state->ac_prefs->pop_ssl ? 995 : 110);
|
||||
#else
|
||||
port = pop3_state->ac_prefs->set_popport ?
|
||||
pop3_state->ac_prefs->popport : 110;
|
||||
#endif
|
||||
|
||||
buf = g_strdup_printf(_("Connecting to POP3 server: %s ..."), server);
|
||||
log_message("%s\n", buf);
|
||||
|
@ -542,7 +559,10 @@ static IncState inc_pop3_session_do(IncSession *session)
|
|||
log_warning(_("Can't connect to POP3 server: %s:%d\n"),
|
||||
server, port);
|
||||
if(!prefs_common.noerrorpanel) {
|
||||
manage_window_focus_in(inc_dialog->dialog->window, NULL, NULL);
|
||||
if((prefs_common.receive_dialog == RECVDIALOG_ALWAYS) ||
|
||||
((prefs_common.receive_dialog == RECVDIALOG_WINDOW_ACTIVE) && focus_window)) {
|
||||
manage_window_focus_in(inc_dialog->dialog->window, NULL, NULL);
|
||||
}
|
||||
alertpanel_error(_("Can't connect to POP3 server: %s:%d"),
|
||||
server, port);
|
||||
manage_window_focus_out(inc_dialog->dialog->window, NULL, NULL);
|
||||
|
@ -558,6 +578,66 @@ static IncState inc_pop3_session_do(IncSession *session)
|
|||
pop3_state->sockinfo = sockinfo;
|
||||
atm->help_sock = sockinfo;
|
||||
|
||||
#ifdef USE_SSL
|
||||
if(pop3_state->ac_prefs->pop_ssl) {
|
||||
X509 *server_cert;
|
||||
|
||||
if(ssl_ctx == NULL) {
|
||||
log_warning(_("SSL not available\n"));
|
||||
|
||||
pop3_automaton_terminate(NULL, atm);
|
||||
automaton_destroy(atm);
|
||||
|
||||
return INC_ERROR;
|
||||
}
|
||||
|
||||
sockinfo->ssl = SSL_new(ssl_ctx);
|
||||
if(sockinfo->ssl == NULL) {
|
||||
log_warning(_("Error creating ssl context\n"));
|
||||
|
||||
pop3_automaton_terminate(NULL, atm);
|
||||
automaton_destroy(atm);
|
||||
|
||||
return INC_ERROR;
|
||||
}
|
||||
SSL_set_fd(sockinfo->ssl, sockinfo->sock);
|
||||
if(SSL_connect(sockinfo->ssl) == -1) {
|
||||
log_warning(_("SSL connect failed\n"));
|
||||
|
||||
pop3_automaton_terminate(NULL, atm);
|
||||
automaton_destroy(atm);
|
||||
|
||||
return INC_ERROR;
|
||||
}
|
||||
|
||||
/* Get the cipher */
|
||||
|
||||
log_print(_("SSL connection using %s\n"), SSL_get_cipher(sockinfo->ssl));
|
||||
|
||||
/* Get server's certificate (note: beware of dynamic allocation) */
|
||||
|
||||
if((server_cert = SSL_get_peer_certificate(sockinfo->ssl)) != NULL) {
|
||||
char *str;
|
||||
|
||||
log_print(_("Server certificate:\n"));
|
||||
|
||||
if((str = X509_NAME_oneline(X509_get_subject_name (server_cert),0,0)) != NULL) {
|
||||
log_print(_(" Subject: %s\n"), str);
|
||||
free(str);
|
||||
}
|
||||
|
||||
if((str = X509_NAME_oneline(X509_get_issuer_name (server_cert),0,0)) != NULL) {
|
||||
log_print(_(" Issuer: %s\n"), str);
|
||||
free(str);
|
||||
}
|
||||
|
||||
X509_free(server_cert);
|
||||
}
|
||||
} else {
|
||||
sockinfo->ssl = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
recv_set_ui_func(inc_pop3_recv_func, session);
|
||||
|
||||
#if USE_THREADS
|
||||
|
@ -578,6 +658,13 @@ static IncState inc_pop3_session_do(IncSession *session)
|
|||
pthread_join(sockinfo->connect_thr, NULL);
|
||||
*/
|
||||
#endif
|
||||
|
||||
#if USE_SSL
|
||||
if(sockinfo->ssl) {
|
||||
SSL_free(sockinfo->ssl);
|
||||
}
|
||||
#endif
|
||||
|
||||
automaton_destroy(atm);
|
||||
|
||||
return pop3_state->inc_state;
|
||||
|
@ -679,7 +766,10 @@ static gint connection_check_cb(Automaton *atm)
|
|||
log_warning(_("Can't connect to POP3 server: %s:%d\n"),
|
||||
sockinfo->hostname, sockinfo->port);
|
||||
if(!prefs_common.noerrorpanel) {
|
||||
manage_window_focus_in(inc_dialog->dialog->window, NULL, NULL);
|
||||
if((prefs_common.receive_dialog == RECVDIALOG_ALWAYS) ||
|
||||
((prefs_common.receive_dialog == RECVDIALOG_WINDOW_ACTIVE) && focus_window)) {
|
||||
manage_window_focus_in(inc_dialog->dialog->window, NULL, NULL);
|
||||
}
|
||||
alertpanel_error(_("Can't connect to POP3 server: %s:%d"),
|
||||
sockinfo->hostname, sockinfo->port);
|
||||
manage_window_focus_out(inc_dialog->dialog->window, NULL, NULL);
|
||||
|
@ -962,6 +1052,8 @@ static gint get_spool(FolderItem *dest, const gchar *mbox)
|
|||
unlock_mbox(mbox, lockfd, LOCK_FLOCK);
|
||||
|
||||
if (folder_table) {
|
||||
g_hash_table_insert(folder_table, dest,
|
||||
GINT_TO_POINTER(1));
|
||||
folder_item_scan_foreach(folder_table);
|
||||
folderview_update_item_foreach(folder_table);
|
||||
g_hash_table_destroy(folder_table);
|
||||
|
|
Loading…
Reference in a new issue