[Dovecot] problem with i_stream_next_line()
Timo Sirainen
tss at iki.fi
Tue Nov 4 22:43:09 EET 2008
It's not a good idea to change the code that way. For example dovecot-
uidlist reading relies on i_stream_next_line() not returning a
partially written. That's why the API description also says:
/* Gets the next line from stream and returns it, or NULL if more data
is
needed to make a full line. Note that if the stream ends with LF
not being
the last character, this function doesn't return the last line. */
char *i_stream_next_line(struct istream *stream);
I'd think the easiest way would be for you to just add the missing LFs
to the subscription files. Or alternatively change the subscription
file reading code to also include the last line (with
i_stream_get_data() after i_stream_next_line() has returned NULL).
On Nov 4, 2008, at 10:36 PM, Giorgenes Gelatti wrote:
> I did the patch below and it worked for me.
>
> diff --git a/dovecot/src/lib/istream.c b/dovecot/src/lib/istream.c
> index 4b218b9..b195b4f 100644
> --- a/dovecot/src/lib/istream.c
> +++ b/dovecot/src/lib/istream.c
> @@ -245,6 +245,10 @@ char *i_stream_next_line(struct istream *stream)
> }
> }
>
> + if(ret_buf == NULL && i == _stream->pos) {
> + ret_buf = i_stream_next_line_finish(_stream, i);
> + }
> +
> return ret_buf;
>
>
> 2008/11/4 Giorgenes Gelatti <giorgenes at gmail.com>
>
>> Hello there,
>>
>> I have a "subscriptions" file that is *not* ended with a line break
>> (created by another system).
>> When I do a "lsub "" "*"" the last mailbox name is not listed.
>> Debugging a little showed that it looks like i_stream_next_line()
>> is not
>> returning the last line if it doesn't end with a line break.
>>
>> Is this a bug?
>>
>> btw, i'm using version 1.1.6.
>>
>> []'s
>>
>>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 194 bytes
Desc: This is a digitally signed message part
Url : http://dovecot.org/pipermail/dovecot/attachments/20081104/93e724b2/attachment.bin
More information about the dovecot
mailing list