session->is_smtp = is_smtp;
session->ping_tag = -1;
+
+ session->proxy_info = NULL;
}
/*!
session->server = g_strdup(server);
session->port = port;
+ if (session->proxy_info) {
+ server = session->proxy_info->proxy_host;
+ port = session->proxy_info->proxy_port;
+ }
+
session->conn_id = sock_connect_async(server, port, session_connect_cb,
session);
if (session->conn_id < 0) {
sock->is_smtp = session->is_smtp;
sock->ssl_cert_auto_accept = session->ssl_cert_auto_accept;
+ if (session->proxy_info) {
+ debug_print("connecting through socks\n");
+ sock_set_nonblocking_mode(sock, FALSE);
+ if (proxy_connect(sock, session->server, session->port,
+ session->proxy_info) < 0) {
+ g_warning("can't establish SOCKS connection.");
+ session->state = SESSION_ERROR;
+ return -1;
+ }
+ }
+
+
#ifdef USE_GNUTLS
sock->gnutls_priority = session->gnutls_priority;