Replying to myself, what fun.
On Sun, 2 Feb 2003 11:06:39 -0500
"Amelia A.Lewis"
On 02 Feb 2003 09:15:19 +0200 Timo Sirainen
wrote: Here's a patch, thanks for bug report :)
Thank you! Only it doesn't work. I don't quite know why, either (it's almost exactly what I tried, but skipping over the skip_line seems to mean that it can't find the tag to read). Which seems weird. Is it possible that client->parser->input != client->input? Such that client->parser->input still points at the original fd?
Seems to solve the problem. Here's the patch (inlined), modified to make a new parser attached to the new fds. diff -ru dovecot-0.99.7/src/login/client.c dovecot-0.99.7p1/src/login/client.c --- dovecot-0.99.7/src/login/client.c 2003-01-11 17:29:47.000000000 +0200 +++ dovecot-0.99.7p1/src/login/client.c 2003-02-02 09:11:18.000000000 +0200 @@ -91,6 +91,9 @@ client->tls = TRUE; client_set_title(client); + /* we skipped it already, so don't ignore next command */ + client->skip_line = FALSE; + client->fd = fd_ssl; i_stream_unref(client->input); o_stream_unref(client->output); client->input = i_stream_create_file(fd_ssl, default_pool, 8192, FALSE); client->output = o_stream_create_file(fd_ssl, default_pool, 1024, IO_PRIORITY_DEFAULT, FALSE); + + imap_parser_destroy(client->parser); + client->parser = imap_parser_create(client->input, client->output, + MAX_INBUF_SIZE, + MAX_IMAP_ARG_ELEMENTS); } else { client_send_line(client, " * BYE TLS handehake failed."); client_destroy(client, "TLS handshake failed"); Amy! -- Amelia A. Lewis amyzing {at} talsever.com A hundred thousand lemmings can't be wrong.