Re: [evolution-patches] fix for tim's laptop getting "imap response ends too soon"
- From: Not Zed <notzed ximian com>
- To: Jeffrey Stedfast <fejj novell com>
- Cc: evolution-patches ximian com
- Subject: Re: [evolution-patches] fix for tim's laptop getting "imap response ends too soon"
- Date: Mon, 21 Mar 2005 11:43:23 +0800
guy at work had this a lot, groupwise server is very slow in sydney it seems.
looks reasonable to me.
On Fri, 2005-03-18 at 19:25 -0500, Jeffrey Stedfast wrote:
well, I don't know if it actually fixes it or not but this code looked
sceptical, so... maybe.
can't repro on tims laptop anymore and I'm tired and I want to go
home... so here's a possible fix
text/plain attachment (imap-too-soon.patch)
|
? 70425.patch
? imap-too-soon.patch
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/ChangeLog,v
retrieving revision 1.13
diff -u -r1.13 ChangeLog
--- ChangeLog 15 Mar 2005 01:48:04 -0000 1.13
+++ ChangeLog 19 Mar 2005 00:25:40 -0000
@@ -1,3 +1,9 @@
+2005-03-18 Jeffrey Stedfast <fejj novell com>
+
+ * camel-imap-command.c (imap_read_untagged): Continue reading data
+ until we've read all the data (camel_stream_read() makes no
+ guarantee that it will read n bytes in a single call).
+
2005-03-10 Jeffrey Stedfast <fejj novell com>
* camel-imap-folder.c (imap_sync_online): READ-ONLY doesn't mean
Index: camel-imap-command.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-command.c,v
retrieving revision 1.67
diff -u -r1.67 camel-imap-command.c
--- camel-imap-command.c 4 Feb 2005 03:09:22 -0000 1.67
+++ camel-imap-command.c 19 Mar 2005 00:25:40 -0000
@@ -413,7 +413,7 @@
static char *
imap_read_untagged (CamelImapStore *store, char *line, CamelException *ex)
{
- int fulllen, ldigits, nread, i, sexp = 0;
+ int fulllen, ldigits, nread, n, i, sexp = 0;
unsigned int length;
GPtrArray *data;
GString *str;
@@ -456,18 +456,24 @@
/* Read the literal */
str = g_string_sized_new (length + 2);
str->str[0] = '\n';
- nread = camel_stream_read (store->istream, str->str + 1, length);
- if (nread == -1) {
- if (errno == EINTR)
- camel_exception_set (ex, CAMEL_EXCEPTION_USER_CANCEL,
- _("Operation cancelled"));
- else
- camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- g_strerror (errno));
- camel_service_disconnect (CAMEL_SERVICE (store), FALSE, NULL);
- g_string_free (str, TRUE);
- goto lose;
- }
+ nread = 0;
+
+ do {
+ if ((n = camel_stream_read (store->istream, str->str + nread + 1, length - nread)) == -1) {
+ if (errno == EINTR)
+ camel_exception_set (ex, CAMEL_EXCEPTION_USER_CANCEL,
+ _("Operation cancelled"));
+ else
+ camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
+ g_strerror (errno));
+ camel_service_disconnect (CAMEL_SERVICE (store), FALSE, NULL);
+ g_string_free (str, TRUE);
+ goto lose;
+ }
+
+ nread += n;
+ } while (n > 0 && nread < length);
+
if (nread < length) {
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
_("Server response ended too soon."));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]