[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