return;
}
+ proxy->refcount++;
+
while (proxy->sslout_size < sizeof(proxy->sslout_buf) &&
!proxy->destroyed) {
ret = net_receive(proxy->fd_plain,
ssl_write(proxy);
}
}
+
+ ssl_proxy_unref(proxy);
}
static void plain_write(void *context)
struct ssl_proxy *proxy = context;
ssize_t ret;
+ proxy->refcount++;
+
ret = net_transmit(proxy->fd_plain, proxy->plainout_buf,
proxy->plainout_size);
if (ret < 0)
ssl_set_io(proxy, SSL_ADD_INPUT);
}
+ ssl_proxy_unref(proxy);
}
static const char *ssl_last_error(void)
{
if (--proxy->refcount > 0)
return TRUE;
+ i_assert(proxy->refcount == 0);
hash_remove(ssl_proxies, proxy);