/pidgin/main: 7f1d2f3ba6ae: Clear ununused functions from proxy....
Mike Ruprecht <[email protected]>
| Newsgroups | gmane.comp.gnome.gaim.cvs |
|---|---|
| Message-ID | <[email protected]> |
Changeset: 7f1d2f3ba6ae337195d7b86e30bdb9a16e19ef6b Author: Mike Ruprecht <[email protected]> Date: 2016-01-10 03:23 -0600 Branch: purple-proxy-to-gio URL: https://hg.pidgin.im/pidgin/main/rev/7f1d2f3ba6ae Description: Clear ununused functions from proxy.[ch] including purple_proxy_connect_udp() Since porting libpurple's proxy API to internally use Gio, a lot of functions remain unused. purple_proxy_connect_udp() was added for the QQ prpl (ticket #6589), but no longer appears to be used. This patch removes all of these functions in favor of the Gio versions. diffstat: libpurple/proxy.c | 1676 +---------------------------------------------------- libpurple/proxy.h | 30 - 2 files changed, 4 insertions(+), 1702 deletions(-) diffs (truncated from 1750 to 300 lines): diff --git a/libpurple/proxy.c b/libpurple/proxy.c --- a/libpurple/proxy.c +++ b/libpurple/proxy.c @@ -99,8 +99,6 @@ static PurpleProxyInfo *global_proxy_inf static GSList *handles = NULL; -static void try_connect(PurpleProxyConnectData *connect_data); - /* * TODO: Eventually (GObjectification) this bad boy will be removed, because it is * a gross fix for a crashy problem. @@ -639,35 +637,13 @@ purple_proxy_connect_data_disconnect(Pur { purple_debug_error("proxy", "Connection attempt failed: %s\n", error_message); - if (connect_data->hosts != NULL) - try_connect(connect_data); - else - { - /* Everything failed! Tell the originator of the request. */ - connect_data->connect_cb(connect_data->data, -1, error_message); - purple_proxy_connect_data_destroy(connect_data); - } + + /* Everything failed! Tell the originator of the request. */ + connect_data->connect_cb(connect_data->data, -1, error_message); + purple_proxy_connect_data_destroy(connect_data); } } -/* - * This calls purple_proxy_connect_data_disconnect(), but it lets you - * specify the error_message using a printf()-like syntax. - */ -static void -purple_proxy_connect_data_disconnect_formatted(PurpleProxyConnectData *connect_data, const char *format, ...) -{ - va_list args; - gchar *tmp; - - va_start(args, format); - tmp = g_strdup_vprintf(format, args); - va_end(args); - - purple_proxy_connect_data_disconnect(connect_data, tmp); - g_free(tmp); -} - static void purple_proxy_connect_data_connected(PurpleProxyConnectData *connect_data) { @@ -687,1572 +663,6 @@ purple_proxy_connect_data_connected(Purp purple_proxy_connect_data_destroy(connect_data); } -static void -socket_ready_cb(gpointer data, gint source, PurpleInputCondition cond) -{ - PurpleProxyConnectData *connect_data = data; - int error = 0; - int ret; - - /* If the socket-connected message had already been triggered when connect_data - * was destroyed via purple_proxy_connect_cancel(), we may get here with a freed connect_data. - */ - if (!PURPLE_PROXY_CONNECT_DATA_IS_VALID(connect_data)) - return; - - purple_debug_info("proxy", "Connecting to %s:%d.\n", - connect_data->host, connect_data->port); - - /* - * purple_input_get_error after a non-blocking connect returns -1 if something is - * really messed up (bad descriptor, usually). Otherwise, it returns 0 and - * error holds what connect would have returned if it blocked until now. - * Thus, error == 0 is success, error == EINPROGRESS means "try again", - * and anything else is a real error. - * - * (error == EINPROGRESS can happen after a select because the kernel can - * be overly optimistic sometimes. select is just a hint that you might be - * able to do something.) - */ - ret = purple_input_get_error(connect_data->fd, &error); - - if (ret == 0 && error == EINPROGRESS) { - /* No worries - we'll be called again later */ - /* TODO: Does this ever happen? */ - purple_debug_info("proxy", "(ret == 0 && error == EINPROGRESS)\n"); - return; - } - - if (ret != 0 || error != 0) { - if (ret != 0) - error = errno; - purple_debug_error("proxy", "Error connecting to %s:%d (%s).\n", - connect_data->host, connect_data->port, g_strerror(error)); - - purple_proxy_connect_data_disconnect(connect_data, g_strerror(error)); - return; - } - - purple_proxy_connect_data_connected(connect_data); -} - -static gboolean -clean_connect(gpointer data) -{ - purple_proxy_connect_data_connected(data); - - return FALSE; -} - -static void -proxy_connect_udp_none(PurpleProxyConnectData *connect_data, common_sockaddr_t *addr, socklen_t addrlen) -{ - purple_debug_info("proxy", "UDP Connecting to %s:%d with no proxy\n", - connect_data->host, connect_data->port); - - connect_data->fd = socket(addr->sa.sa_family, SOCK_DGRAM, 0); - if (connect_data->fd < 0) - { - purple_proxy_connect_data_disconnect_formatted(connect_data, - _("Unable to create socket: %s"), g_strerror(errno)); - return; - } - _purple_network_set_common_socket_flags(connect_data->fd); - - if (connect(connect_data->fd, &addr->sa, addrlen) != 0) - { - if ((errno == EINPROGRESS) || (errno == EINTR)) - { - purple_debug_info("proxy", "UDP connection in progress\n"); - connect_data->inpa = purple_input_add(connect_data->fd, - PURPLE_INPUT_WRITE, socket_ready_cb, connect_data); - } - else - { - purple_proxy_connect_data_disconnect(connect_data, g_strerror(errno)); - } - } - else - { - /* - * The connection happened IMMEDIATELY... strange, but whatever. - */ - int error = ETIMEDOUT; - int ret; - - purple_debug_info("proxy", "UDP Connected immediately.\n"); - - ret = purple_input_get_error(connect_data->fd, &error); - if ((ret != 0) || (error != 0)) - { - if (ret != 0) - error = errno; - purple_proxy_connect_data_disconnect(connect_data, g_strerror(error)); - return; - } - - /* - * We want to call the "connected" callback eventually, but we - * don't want to call it before we return, just in case. - */ - purple_timeout_add(10, clean_connect, connect_data); - } -} - -static void -proxy_connect_none(PurpleProxyConnectData *connect_data, common_sockaddr_t *addr, socklen_t addrlen) -{ - purple_debug_info("proxy", "Connecting to %s:%d with no proxy\n", - connect_data->host, connect_data->port); - - connect_data->fd = socket(addr->sa.sa_family, SOCK_STREAM, 0); - if (connect_data->fd < 0) - { - purple_proxy_connect_data_disconnect_formatted(connect_data, - _("Unable to create socket: %s"), g_strerror(errno)); - return; - } - _purple_network_set_common_socket_flags(connect_data->fd); - - if (connect(connect_data->fd, &addr->sa, addrlen) != 0) - { - if ((errno == EINPROGRESS) || (errno == EINTR)) - { - purple_debug_info("proxy", "Connection in progress\n"); - connect_data->inpa = purple_input_add(connect_data->fd, - PURPLE_INPUT_WRITE, socket_ready_cb, connect_data); - } - else - { - purple_proxy_connect_data_disconnect(connect_data, g_strerror(errno)); - } - } - else - { - /* - * The connection happened IMMEDIATELY... strange, but whatever. - */ - int error = ETIMEDOUT; - int ret; - - purple_debug_info("proxy", "Connected immediately.\n"); - - ret = purple_input_get_error(connect_data->fd, &error); - if ((ret != 0) || (error != 0)) - { - if (ret != 0) - error = errno; - purple_proxy_connect_data_disconnect(connect_data, g_strerror(error)); - return; - } - - /* - * We want to call the "connected" callback eventually, but we - * don't want to call it before we return, just in case. - */ - purple_timeout_add(10, clean_connect, connect_data); - } -} - -/* - * This is a utility function used by the HTTP, SOCKS4 and SOCKS5 - * connect functions. It writes data from a buffer to a socket. - * When all the data is written it sets up a watcher to read a - * response and call a specified function. - */ -static void -proxy_do_write(gpointer data, gint source, PurpleInputCondition cond) -{ - PurpleProxyConnectData *connect_data; - const guchar *request; - gsize request_len; - int ret; - - connect_data = data; - request = connect_data->write_buffer + connect_data->written_len; - request_len = connect_data->write_buf_len - connect_data->written_len; - - ret = write(connect_data->fd, request, request_len); - if (ret <= 0) - { - if (errno == EAGAIN) - /* No worries */ - return; - - /* Error! */ - purple_proxy_connect_data_disconnect(connect_data, g_strerror(errno)); - return; - } - if ((gsize)ret < request_len) { - connect_data->written_len += ret; - return; - } - - /* We're done writing data! Wait for a response. */ - g_free(connect_data->write_buffer); - connect_data->write_buffer = NULL; - purple_input_remove(connect_data->inpa); - connect_data->inpa = purple_input_add(connect_data->fd, - PURPLE_INPUT_READ, connect_data->read_cb, connect_data); -} - -/* - * We're using an HTTP proxy for a non-port 80 tunnel. Read the - * response to the CONNECT request. - */ -static void -http_canread(gpointer data, gint source, PurpleInputCondition cond) -{ - int len, headers_len, status = 0; - gboolean error; - PurpleProxyConnectData *connect_data = data; - char *p; - gsize max_read; - - if (connect_data->read_buffer == NULL) { - connect_data->read_buf_len = 8192; - connect_data->read_buffer = g_malloc(connect_data->read_buf_len); - connect_data->read_len = 0; - } - - p = (char *)connect_data->read_buffer + connect_data->read_len; - max_read = connect_data->read_buf_len - connect_data->read_len - 1; - - len = read(connect_data->fd, p, max_read); - - if (len == 0) { - purple_proxy_connect_data_disconnect(connect_data, - _("Server closed the connection")); - return; - } - - if (len < 0) { - if (errno == EAGAIN) - /* No worries */ - return; - _______________________________________________ Commits mailing list [email protected] https://pidgin.im/cgi-bin/mailman/listinfo/commits