ATTR_NULL(2);
static void login_proxy_free_errno(struct login_proxy **proxy,
- int err, const char *who)
+ int err, bool server)
{
- const char *reason;
+ const char *reason, *who = server ? "server" : "client";
reason = err == 0 || err == EPIPE ?
t_strdup_printf("Disconnected by %s", who) :
ret = net_receive(proxy->server_fd, buf, sizeof(buf));
if (ret < 0) {
- login_proxy_free_errno(&proxy, errno, "server");
+ login_proxy_free_errno(&proxy, errno, TRUE);
return;
}
o_stream_cork(proxy->client_output);
o_stream_uncork(proxy->client_output);
if (ret2 != ret) {
login_proxy_free_errno(&proxy,
- proxy->client_output->stream_errno,
- "client");
+ proxy->client_output->stream_errno, FALSE);
}
}
ret = net_receive(proxy->client_fd, buf, sizeof(buf));
if (ret < 0) {
- login_proxy_free_errno(&proxy, errno, "client");
+ login_proxy_free_errno(&proxy, errno, FALSE);
return;
}
o_stream_cork(proxy->server_output);
o_stream_uncork(proxy->server_output);
if (ret2 != ret) {
login_proxy_free_errno(&proxy,
- proxy->server_output->stream_errno,
- "server");
+ proxy->server_output->stream_errno, TRUE);
}
}
proxy->last_io = ioloop_time;
if (o_stream_flush(proxy->server_output) < 0) {
login_proxy_free_errno(&proxy,
- proxy->server_output->stream_errno,
- "server");
+ proxy->server_output->stream_errno, TRUE);
return 1;
}
proxy->last_io = ioloop_time;
if (o_stream_flush(proxy->client_output) < 0) {
login_proxy_free_errno(&proxy,
- proxy->client_output->stream_errno,
- "client");
+ proxy->client_output->stream_errno, FALSE);
return 1;
}