diff plugins/yay/conn.c @ 1565:2c66d386be90

[gaim-migrate @ 1575] http proxy for libyay. yay. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Tue, 13 Mar 2001 10:05:45 +0000
parents 92b3dd1e4129
children e9faf5dfdba0
line wrap: on
line diff
--- a/plugins/yay/conn.c	Sun Mar 11 12:38:59 2001 +0000
+++ b/plugins/yay/conn.c	Tue Mar 13 10:05:45 2001 +0000
@@ -34,6 +34,16 @@
 	return sess;
 }
 
+void yahoo_set_proxy(struct yahoo_session *session, int proxy_type, char *proxy_host, int proxy_port)
+{
+	if (!session || !proxy_type || !proxy_host)
+		return;
+
+	session->proxy_type = proxy_type;
+	session->proxy_host = g_strdup(proxy_host);
+	session->proxy_port = proxy_port;
+}
+
 static int yahoo_connect_host(struct yahoo_session *sess, const char *host, int port, int *statusret)
 {
 	struct sockaddr_in sa;
@@ -83,6 +93,12 @@
 
 	if (host) {
 		conn->socket = yahoo_connect_host(session, host, port, &status);
+	} else if (session->proxy_type) {
+		YAHOO_PRINT(session, YAHOO_LOG_DEBUG, "connecting to proxy");
+		conn->socket = yahoo_connect_host(session, session->proxy_host,
+				session->proxy_port, &status);
+		if (type == YAHOO_CONN_TYPE_MAIN)
+			conn->type = YAHOO_CONN_TYPE_PROXY;
 	} else {
 		switch (type) {
 			case YAHOO_CONN_TYPE_AUTH:
@@ -230,6 +246,8 @@
 {
 	if (!session)
 		return 0;
+	if (session->proxy_host)
+		g_free(session->proxy_host);
 	g_free(session);
 	return 0;
 }