[BUG] : compile errors and threading issues
- From: Emmanuel <e allaud wanadoo fr>
- To: ML de Balsa <balsa-list gnome org>
- Subject: [BUG] : compile errors and threading issues
- Date: Thu, 5 Sep 2002 16:13:11 -0400
Hi all,
I'm trying to code the new sentbox behaviour upon sending.
But before that there a 2 serious issues : balsa won't compile with the
following configure options
./configure --with-esmtp=no --enable-threads=no
The problem is in libbalsa/send.c, in libbalsa_process_queue (the
non-esmtp version) :
gboolean libbalsa_process_queue(LibBalsaMailbox* outbox, gint
encoding, gboolean flow)
{
[Variables decl.];
/* We do messages in queue now only if where are not sending them
already */
send_lock();
ensure_send_progress_dialog();
if (sending_threads==0) {
libbalsa_mailbox_open(outbox);
lista = outbox->message_list;
mqi = message_queue;
while (lista != NULL) {
queu = LIBBALSA_MESSAGE(lista->data);
new_message = msg_queue_item_new(queu);
if (!libbalsa_create_msg(queu, new_message->message,
new_message->tempfile, encoding, flow, 1)) {
msg_queue_item_destroy(new_message);
} else {
if (mqi)
mqi->next_message = new_message;
else
message_queue = new_message;
mqi = new_message;
total_messages_left++;
}
lista = lista->next;
}
---> #ifdef BALSA_USE_THREADS
}
start_thread = sending_threads==0;
if (start_thread) {
sending_threads++;
send_message_info=send_message_info_new(outbox);
pthread_create(&send_mail, NULL,
(void *) &balsa_send_message_real,
send_message_info);
/* Detach so we don't need to pthread_join
* This means that all resources will be
* reclaimed as soon as the thread exits
*/
pthread_detach(send_mail);
}
#else /*non-threaded code */
send_message_info=send_message_info_new(outbox);
balsa_send_message_real(send_message_info);
#endif
send_unlock();
return TRUE;
}
The ifdef is misplaced (One line down corrects this). This is for the
compile problem, but then when you compare both instances of
libbalsa_process_queue (with or without libEsmtp), there is a big
difference in the way they handle the threading issues, and both seems
buggy.
The non esmtp version (the one above) tests if sending thread is yet in
progres, and do nothing if it is.
The esmtp version just do not test if another thread is in progress. What
is the good way to do it ? Could someone review it also please.
Bye
Manu
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]