Re: Patch: Camel stream filter waits properly for slow streams
- From: José Dapena Paz <jdapena igalia com>
- To: Philip Van Hoof <spam pvanhoof be>
- Cc: Matthew Barnes <mbarnes redhat com>, evolution-patches <evolution-patches gnome org>, Evolution Hackers <evolution-hackers gnome org>, tinymail-devel-list <tinymail-devel-list gnome org>, Jeffrey Stedfast <fejj novell com>
- Subject: Re: Patch: Camel stream filter waits properly for slow streams
- Date: Tue, 20 May 2008 18:38:29 +0200
El mar, 20-05-2008 a las 17:03 +0200, Philip Van Hoof escribió:
> Please bring this upstream too, José
>
> Response from Jeffrey:
>
> jeff_ yea, you should compare against -1
> jeff_ as long as it returns >0, it wrote all the data
> jeff_ -1 is error
> jeff_ 0 is EOF maybe
> jeff_ if write even returns 0 ever
Ok, prepared patch for camel (it applied without problems). The
changelog would be mostly the same:
* evolution-data-server/camel/camel-stream-filter.c:
(do_write): if the camel_stream_write call does not write the
full buffer but it's not due to an error, then loop to go on
writing the stream.
--
José Dapena Paz <jdapena igalia com>
Igalia
Index: camel/camel-stream-filter.c
===================================================================
--- camel/camel-stream-filter.c (revisión: 8817)
+++ camel/camel-stream-filter.c (copia de trabajo)
@@ -290,6 +290,7 @@
struct _filter *f;
size_t presize, len, left = n;
char *buffer, realbuffer[READ_SIZE+READ_PAD];
+ size_t written = 0;
p->last_was_read = FALSE;
@@ -321,8 +322,13 @@
f = f->next;
}
- if (camel_stream_write(filter->source, buffer, len) != len)
- return -1;
+ for (written = 0; written < len;) {
+ size_t just_written;
+ just_written = camel_stream_write (filter->source, buffer + written, len - written);
+ if (just_written == -1)
+ return -1;
+ written += just_written;
+ }
}
g_check(p->realbuffer);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]