pop3-proxy.c revision 1eff76c5dbd2ff14bbb7e40a164c290931bdf692
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainen/* Copyright (C) 2004 Timo Sirainen */
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainenstatic void proxy_input(struct istream *input, struct ostream *output,
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainen /* remote authentication failed, we're just
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainen freeing the proxy */
acc8c0647873b1c847bfa362ddefd0d219d0aa91Timo Sirainen /* failed for some reason, probably server disconnected */
acc8c0647873b1c847bfa362ddefd0d219d0aa91Timo Sirainen "-ERR [IN-USE] Temporary login failure.");
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainen /* buffer full */
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainen i_error("pop-proxy(%s): Remote input buffer full",
e6bdf53eb0143af99e3eb977ff0f8a496ecd1a8dTimo Sirainen /* disconnected */
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainen client_destroy(client, "Proxy: Remote disconnected");
9446c7a5d400cba60d097c528bd08312552438e3Timo Sirainen /* this is a banner */
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainen "Remote returned invalid banner: %s",
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainen /* send USER command */
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainen (void)o_stream_send(output, str_data(str), str_len(str));
e6bdf53eb0143af99e3eb977ff0f8a496ecd1a8dTimo Sirainen /* USER successful, send PASS */
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainen /* Login successful. Send this line to client. */
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainen (void)o_stream_send_str(client->output, line);
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainen (void)o_stream_send(client->output, "\r\n", 2);
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainen msg = t_strdup_printf("proxy(%s): started proxying to %s:%u",
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainen login_proxy_detach(client->proxy, client->input,
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainen /* Login failed. Send our own failure reply so client can't
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainen figure out if user exists or not just by looking at the
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainen reply string. */
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainen client_send_line(client, "-ERR "AUTH_FAILED_MSG);
b494ffed8ded8d170d9ace3dc607b1d278048241Timo Sirainen /* allow client input again */