diff src/pop3/client.c @ 1363:383e4b9e347c HEAD

Crashfix if there was some errors while opening mailbox
author Timo Sirainen <tss@iki.fi>
date Wed, 16 Apr 2003 17:24:12 +0300
parents d805c2f1d6a9
children ac714d7d0b67
line wrap: on
line diff
--- a/src/pop3/client.c	Wed Apr 16 16:57:21 2003 +0300
+++ b/src/pop3/client.c	Wed Apr 16 17:24:12 2003 +0300
@@ -103,7 +103,7 @@
 	return FALSE;
 }
 
-struct client *client_create(int hin, int hout, struct mailbox *mailbox)
+struct client *client_create(int hin, int hout, struct mail_storage *storage)
 {
 	struct client *client;
 
@@ -119,21 +119,24 @@
 
 	client->io = io_add(hin, IO_READ, client_input, client);
         client->last_input = ioloop_time;
+	client->storage = storage;
 
-	client->storage = mailbox->storage;
-	client->mailbox = mailbox;
+	storage->set_callbacks(storage, &mail_storage_callbacks, client);
 
-	mailbox->storage->set_callbacks(mailbox->storage,
-					&mail_storage_callbacks, client);
+	client->mailbox = storage->open_mailbox(storage, "INBOX", FALSE, FALSE);
+	if (client->mailbox == NULL) {
+		client_send_line(client, "-ERR No INBOX for user.");
+		return NULL;
+	}
+
+	if (!init_mailbox(client)) {
+		client_destroy(client);
+		return NULL;
+	}
 
 	i_assert(my_client == NULL);
 	my_client = client;
 
-	if (!init_mailbox(client)) {
-		client_destroy(client);
-		client = NULL;
-	}
-
 	return client;
 }