comparison 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
comparison
equal deleted inserted replaced
1564:aa69b15d9403 1565:2c66d386be90
30 30
31 if (!(sess = g_new0(struct yahoo_session, 1))) 31 if (!(sess = g_new0(struct yahoo_session, 1)))
32 return NULL; 32 return NULL;
33 33
34 return sess; 34 return sess;
35 }
36
37 void yahoo_set_proxy(struct yahoo_session *session, int proxy_type, char *proxy_host, int proxy_port)
38 {
39 if (!session || !proxy_type || !proxy_host)
40 return;
41
42 session->proxy_type = proxy_type;
43 session->proxy_host = g_strdup(proxy_host);
44 session->proxy_port = proxy_port;
35 } 45 }
36 46
37 static int yahoo_connect_host(struct yahoo_session *sess, const char *host, int port, int *statusret) 47 static int yahoo_connect_host(struct yahoo_session *sess, const char *host, int port, int *statusret)
38 { 48 {
39 struct sockaddr_in sa; 49 struct sockaddr_in sa;
81 conn = g_new0(struct yahoo_conn, 1); 91 conn = g_new0(struct yahoo_conn, 1);
82 conn->type = type; 92 conn->type = type;
83 93
84 if (host) { 94 if (host) {
85 conn->socket = yahoo_connect_host(session, host, port, &status); 95 conn->socket = yahoo_connect_host(session, host, port, &status);
96 } else if (session->proxy_type) {
97 YAHOO_PRINT(session, YAHOO_LOG_DEBUG, "connecting to proxy");
98 conn->socket = yahoo_connect_host(session, session->proxy_host,
99 session->proxy_port, &status);
100 if (type == YAHOO_CONN_TYPE_MAIN)
101 conn->type = YAHOO_CONN_TYPE_PROXY;
86 } else { 102 } else {
87 switch (type) { 103 switch (type) {
88 case YAHOO_CONN_TYPE_AUTH: 104 case YAHOO_CONN_TYPE_AUTH:
89 conn->socket = yahoo_connect_host(session, YAHOO_AUTH_HOST, 105 conn->socket = yahoo_connect_host(session, YAHOO_AUTH_HOST,
90 YAHOO_AUTH_PORT, &status); 106 YAHOO_AUTH_PORT, &status);
228 244
229 int yahoo_delete(struct yahoo_session *session) 245 int yahoo_delete(struct yahoo_session *session)
230 { 246 {
231 if (!session) 247 if (!session)
232 return 0; 248 return 0;
249 if (session->proxy_host)
250 g_free(session->proxy_host);
233 g_free(session); 251 g_free(session);
234 return 0; 252 return 0;
235 } 253 }