aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-remote-store.c
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@helixcode.com>2000-11-21 10:21:03 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2000-11-21 10:21:03 +0800
commit2cf986c43b05072cdcacf05aef0c5ddd595c1f18 (patch)
tree8879fea9f0bdf1478ac533408062472a9ef6d78d /camel/camel-remote-store.c
parent484334eaec8c6bd0c9118c318ceb3a503b7ac824 (diff)
downloadgsoc2013-evolution-2cf986c43b05072cdcacf05aef0c5ddd595c1f18.tar.gz
gsoc2013-evolution-2cf986c43b05072cdcacf05aef0c5ddd595c1f18.tar.zst
gsoc2013-evolution-2cf986c43b05072cdcacf05aef0c5ddd595c1f18.zip
Fixed to return the correct bytecount in all cases which is the real fix
2000-11-20 Jeffrey Stedfast <fejj@helixcode.com> * camel-remote-store.c (remote_recv_line): Fixed to return the correct bytecount in all cases which is the real fix to imap_parse_nstring. * providers/imap/camel-imap-command.c (imap_read_untagged): Again, don't use strlen for the post-data, use 'n'. * providers/imap/camel-imap-utils.c (imap_parse_nstring): Undo my previous temp-fix. svn path=/trunk/; revision=6621
Diffstat (limited to 'camel/camel-remote-store.c')
-rw-r--r--camel/camel-remote-store.c34
1 files changed, 16 insertions, 18 deletions
diff --git a/camel/camel-remote-store.c b/camel/camel-remote-store.c
index ee5bf60b10..7c64ab6a67 100644
--- a/camel/camel-remote-store.c
+++ b/camel/camel-remote-store.c
@@ -409,8 +409,8 @@ remote_recv_line (CamelRemoteStore *store, char **dest, CamelException *ex)
{
CamelStreamBuffer *stream = CAMEL_STREAM_BUFFER (store->istream);
GByteArray *bytes;
- gchar buf[1024], *ret;
- guint nread;
+ gchar buf[1025], *ret;
+ gint nread;
*dest = NULL;
@@ -433,36 +433,34 @@ remote_recv_line (CamelRemoteStore *store, char **dest, CamelException *ex)
bytes = g_byte_array_new ();
- nread = 1024;
- while (nread == 1024) {
+ do {
nread = camel_stream_buffer_gets (stream, buf, 1024);
if (nread > 0)
- g_byte_array_append (bytes, buf, nread - 1);
- }
+ g_byte_array_append (bytes, buf, nread);
+ } while (nread == 1024);
g_byte_array_append (bytes, "", 1);
ret = bytes->data;
nread = bytes->len - 1;
g_byte_array_free (bytes, FALSE);
- /* strip off the CRLF sequence at the end of the string */
- for ( ; nread > 0; nread--) {
- if (ret[nread] == '\r') {
- ret[nread] = '\0';
- break;
- }
- }
-
- *dest = ret;
-
- if (!*dest) {
+ if (nread <= 0) {
+ g_free (ret);
+ ret = NULL;
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
g_strerror (errno));
camel_service_disconnect (CAMEL_SERVICE (store), FALSE, NULL);
return -1;
}
-
+
+ /* strip off the CRLF sequence */
+ while (nread > 0 && ret[nread] != '\r')
+ ret[nread--] = '\0';
+ ret[nread] = '\0';
+
+ *dest = ret;
+
#if d(!)0
if (camel_verbose_debug)
fprintf (stderr, "received: %s\n", *dest);
'>* Update to 5.2.1makc2010-05-234-82/+80 * - update to 1.4.1dinoex2010-03-281-0/+1 * disable MAKE_JOBS_SAFE temporary to fix build on tbmakc2009-03-301-1/+0 * Update to 5.2.0makc2009-03-305-252/+73 * Use my @FreeBSD.org email for the rest of my portsmakc2009-02-211-1/+1 * Bump portrevision due to upgrade of devel/gettext.edwin2008-06-061-0/+1 * - Updatwe to 5.1.1miwi2008-05-304-6/+6 * - Update to 5.1.0miwi2008-05-167-90/+133 * - Resolve conflict between qwt 4.x and 5.x by rename libqwt to libqwt4rafan2008-04-022-11/+9 * 1. Chase latest update of Qt, install designer plugin into a new placemiwi2007-09-072-8/+6 * Update to 5.0.2arved2007-07-313-17/+5 * - Migrate from Qt 3 to Qt 4.2.miwi2007-06-153-26/+42 * - Welcome X.org 7.2 \o/.flz2007-05-201-0/+1 * - Update to 5.0.1miwi2007-03-072-4/+4 * - Update to 5.0.0miwi2007-01-294-849/+967