diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2012-01-20 06:01:27 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2012-01-20 06:01:27 +0000 |
commit | 430f45f16d2c4e4b610aa347869a53eb225acd20 (patch) | |
tree | 748078683d549784a4edadeeb36f9149ea972abc /libsylph/news.c | |
parent | 82acd302b6c178d1068535ecfbeaeecdae1bd57e (diff) |
supported NNTP over SOCKS porxy.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@3016 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'libsylph/news.c')
-rw-r--r-- | libsylph/news.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/libsylph/news.c b/libsylph/news.c index 5a6afc14..c4814dd2 100644 --- a/libsylph/news.c +++ b/libsylph/news.c @@ -1,6 +1,6 @@ /* * LibSylph -- E-Mail client library - * Copyright (C) 1999-2009 Hiroyuki Yamamoto + * Copyright (C) 1999-2012 Hiroyuki Yamamoto * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -47,6 +47,7 @@ #if USE_SSL # include "ssl.h" #endif +#include "socks.h" #define NNTP_PORT 119 #if USE_SSL @@ -80,12 +81,14 @@ static gint news_scan_group (Folder *folder, #if USE_SSL static Session *news_session_new (const gchar *server, gushort port, + SocksInfo *socks_info, const gchar *userid, const gchar *passwd, SSLType ssl_type); #else static Session *news_session_new (const gchar *server, gushort port, + SocksInfo *socks_info, const gchar *userid, const gchar *passwd); #endif @@ -203,10 +206,12 @@ static void news_folder_init(Folder *folder, const gchar *name, #if USE_SSL static Session *news_session_new(const gchar *server, gushort port, + SocksInfo *socks_info, const gchar *userid, const gchar *passwd, SSLType ssl_type) #else static Session *news_session_new(const gchar *server, gushort port, + SocksInfo *socks_info, const gchar *userid, const gchar *passwd) #endif { @@ -218,9 +223,9 @@ static Session *news_session_new(const gchar *server, gushort port, log_message(_("creating NNTP connection to %s:%d ...\n"), server, port); #if USE_SSL - session = nntp_session_new(server, port, buf, userid, passwd, ssl_type); + session = nntp_session_new_full(server, port, socks_info, buf, userid, passwd, ssl_type); #else - session = nntp_session_new(server, port, buf, userid, passwd); + session = nntp_session_new_full(server, port, socks_info, buf, userid, passwd); #endif return session; @@ -230,6 +235,7 @@ static Session *news_session_new_for_folder(Folder *folder) { Session *session; PrefsAccount *ac; + SocksInfo *socks_info = NULL; const gchar *userid = NULL; gchar *passwd = NULL; gushort port; @@ -246,16 +252,24 @@ static Session *news_session_new_for_folder(Folder *folder) passwd = input_query_password(ac->nntp_server, userid); } + if (ac->use_socks && ac->use_socks_for_recv && ac->proxy_host) { + socks_info = socks_info_new(ac->socks_type, ac->proxy_host, ac->proxy_port, ac->use_proxy_auth ? ac->proxy_name : NULL, ac->use_proxy_auth ? ac->proxy_pass : NULL); + } + #if USE_SSL port = ac->set_nntpport ? ac->nntpport : ac->ssl_nntp ? NNTPS_PORT : NNTP_PORT; - session = news_session_new(ac->nntp_server, port, userid, passwd, - ac->ssl_nntp); + session = news_session_new(ac->nntp_server, port, socks_info, + userid, passwd, ac->ssl_nntp); #else port = ac->set_nntpport ? ac->nntpport : NNTP_PORT; - session = news_session_new(ac->nntp_server, port, userid, passwd); + session = news_session_new(ac->nntp_server, port, socks_info, + userid, passwd); #endif + if (socks_info) + socks_info_free(socks_info); + g_free(passwd); return session; |