qulogic/pidgin

Use HTTP Method unconditionally.
draft msnp21
2014-12-23, Elliott Sales de Andrade
c55cdb974260
Parents cd5a6082cb27
Children fd6f3126d8c1
Use HTTP Method unconditionally.
--- a/libpurple/protocols/msn/msn.c Wed Dec 17 14:14:57 2014 +0000
+++ b/libpurple/protocols/msn/msn.c Tue Dec 23 00:35:52 2014 -0500
@@ -1326,7 +1326,6 @@
MsnSession *session;
const char *username;
const char *host;
- gboolean http_method = FALSE;
int port;
gc = purple_account_get_connection(account);
@@ -1340,12 +1339,9 @@
return;
}
- http_method = purple_account_get_bool(account, "http_method", FALSE);
-
- if (http_method)
- host = purple_account_get_string(account, "http_method_server", MSN_HTTPCONN_SERVER);
- else
- host = purple_account_get_string(account, "server", MSN_SERVER);
+ purple_account_remove_setting(account, "http_method");
+
+ host = purple_account_get_string(account, "http_method_server", MSN_HTTPCONN_SERVER);
port = purple_account_get_int(account, "port", MSN_PORT);
session = msn_session_new(account);
@@ -1373,7 +1369,7 @@
ui_name && *ui_name ? ui_name : PACKAGE_NAME);
}
- if (!msn_session_connect(session, host, port, http_method))
+ if (!msn_session_connect(session, host, port))
purple_connection_error_reason(gc,
PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
_("Unable to connect"));
@@ -2076,26 +2072,6 @@
return 0;
}
-static void
-msn_keepalive(PurpleConnection *gc)
-{
- MsnSession *session;
- MsnTransaction *trans;
-
- session = gc->proto_data;
-
- if (!session->http_method)
- {
- MsnCmdProc *cmdproc;
-
- cmdproc = session->notification->cmdproc;
-
- trans = msn_transaction_new(cmdproc, "PNG", NULL);
- msn_transaction_set_saveable(trans, FALSE);
- msn_cmdproc_send_trans(cmdproc, trans);
- }
-}
-
static void msn_alias_buddy(PurpleConnection *pc, const char *name, const char *alias)
{
MsnSession *session;
@@ -2942,7 +2918,7 @@
msn_chat_leave, /* chat_leave */
NULL, /* chat_whisper */
msn_chat_send, /* chat_send */
- msn_keepalive, /* keepalive */
+ NULL, /* keepalive */
NULL, /* register_user */
NULL, /* get_cb_info */
NULL, /* get_cb_away */
@@ -3030,11 +3006,6 @@
prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
option);
- option = purple_account_option_bool_new(_("Use HTTP Method"),
- "http_method", FALSE);
- prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
- option);
-
option = purple_account_option_string_new(_("HTTP Method Server"),
"http_method_server", MSN_HTTPCONN_SERVER);
prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
--- a/libpurple/protocols/msn/notification.c Wed Dec 17 14:14:57 2014 +0000
+++ b/libpurple/protocols/msn/notification.c Tue Dec 23 00:35:52 2014 -0500
@@ -1463,8 +1463,8 @@
msn_parse_socket(cmd->params[1], &host, &port);
- if (session->http_method)
- port = 80;
+ /* HTTP method */
+ port = 80;
swboard = msn_switchboard_new(session);
--- a/libpurple/protocols/msn/servconn.c Wed Dec 17 14:14:57 2014 +0000
+++ b/libpurple/protocols/msn/servconn.c Tue Dec 23 00:35:52 2014 -0500
@@ -27,7 +27,6 @@
#include "servconn.h"
#include "error.h"
-static void read_cb(gpointer data, gint source, PurpleInputCondition cond);
static void servconn_timeout_renew(MsnServConn *servconn);
/**************************************************************************
@@ -177,72 +176,33 @@
* Connect
**************************************************************************/
-static void
-connect_cb(gpointer data, gint source, const char *error_message)
-{
- MsnServConn *servconn;
-
- servconn = data;
- servconn->connect_data = NULL;
-
- servconn->fd = source;
-
- if (source >= 0)
- {
- servconn->connected = TRUE;
-
- /* Someone wants to know we connected. */
- servconn->connect_cb(servconn);
- servconn->inpa = purple_input_add(servconn->fd, PURPLE_INPUT_READ,
- read_cb, data);
- servconn_timeout_renew(servconn);
- }
- else
- {
- purple_debug_error("msn", "Connection error: %s\n", error_message);
- msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_CONNECT, error_message);
- }
-}
-
gboolean
msn_servconn_connect(MsnServConn *servconn, const char *host, int port, gboolean force)
{
- MsnSession *session;
-
g_return_val_if_fail(servconn != NULL, FALSE);
g_return_val_if_fail(host != NULL, FALSE);
g_return_val_if_fail(port > 0, FALSE);
- session = servconn->session;
-
if (servconn->connected)
msn_servconn_disconnect(servconn);
g_free(servconn->host);
servconn->host = g_strdup(host);
- if (session->http_method)
- {
- /* HTTP Connection. */
+ /* HTTP Connection. */
- if (!servconn->httpconn->connected || force)
- if (!msn_httpconn_connect(servconn->httpconn, host, port))
- return FALSE;
+ if (!servconn->httpconn->connected || force)
+ if (!msn_httpconn_connect(servconn->httpconn, host, port))
+ return FALSE;
- servconn->connected = TRUE;
- servconn->httpconn->virgin = TRUE;
- servconn_timeout_renew(servconn);
-
- /* Someone wants to know we connected. */
- servconn->connect_cb(servconn);
+ servconn->connected = TRUE;
+ servconn->httpconn->virgin = TRUE;
+ servconn_timeout_renew(servconn);
- return TRUE;
- }
+ /* Someone wants to know we connected. */
+ servconn->connect_cb(servconn);
- servconn->connect_data = purple_proxy_connect(NULL, session->account,
- host, port, connect_cb, servconn);
-
- return (servconn->connect_data != NULL);
+ return TRUE;
}
void
@@ -265,35 +225,6 @@
return;
}
- if (servconn->session->http_method)
- {
- /* Fake disconnection. */
- if (servconn->disconnect_cb != NULL)
- servconn->disconnect_cb(servconn);
-
- return;
- }
-
- if (servconn->inpa > 0)
- {
- purple_input_remove(servconn->inpa);
- servconn->inpa = 0;
- }
-
- if (servconn->timeout_handle > 0)
- {
- purple_timeout_remove(servconn->timeout_handle);
- servconn->timeout_handle = 0;
- }
-
- close(servconn->fd);
-
- servconn->rx_buf = NULL;
- servconn->rx_len = 0;
- servconn->payload_len = 0;
-
- servconn->connected = FALSE;
-
if (servconn->disconnect_cb != NULL)
servconn->disconnect_cb(servconn);
}
@@ -328,34 +259,6 @@
servconn_timeout_renew(servconn);
}
-static void
-servconn_write_cb(gpointer data, gint source, PurpleInputCondition cond)
-{
- MsnServConn *servconn = data;
- gssize ret;
- int writelen;
-
- writelen = purple_circ_buffer_get_max_read(servconn->tx_buf);
-
- if (writelen == 0) {
- purple_input_remove(servconn->tx_handler);
- servconn->tx_handler = 0;
- return;
- }
-
- ret = write(servconn->fd, servconn->tx_buf->outptr, writelen);
-
- if (ret < 0 && errno == EAGAIN)
- return;
- else if (ret <= 0) {
- msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_WRITE, NULL);
- return;
- }
-
- purple_circ_buffer_mark_read(servconn->tx_buf, ret);
- servconn_timeout_renew(servconn);
-}
-
gssize
msn_servconn_write(MsnServConn *servconn, const char *buf, size_t len)
{
@@ -363,45 +266,7 @@
g_return_val_if_fail(servconn != NULL, 0);
- if (!servconn->session->http_method)
- {
- if (servconn->tx_handler == 0) {
- switch (servconn->type)
- {
- case MSN_SERVCONN_NS:
- case MSN_SERVCONN_SB:
- ret = write(servconn->fd, buf, len);
- break;
-#if 0
- case MSN_SERVCONN_DC:
- ret = write(servconn->fd, &buf, sizeof(len));
- ret = write(servconn->fd, buf, len);
- break;
-#endif
- default:
- ret = write(servconn->fd, buf, len);
- break;
- }
- } else {
- ret = -1;
- errno = EAGAIN;
- }
-
- if (ret < 0 && errno == EAGAIN)
- ret = 0;
- if (ret >= 0 && (size_t)ret < len) {
- if (servconn->tx_handler == 0)
- servconn->tx_handler = purple_input_add(
- servconn->fd, PURPLE_INPUT_WRITE,
- servconn_write_cb, servconn);
- purple_circ_buffer_append(servconn->tx_buf, buf + ret,
- len - ret);
- }
- }
- else
- {
- ret = msn_httpconn_write(servconn->httpconn, buf, len);
- }
+ ret = msn_httpconn_write(servconn->httpconn, buf, len);
if (ret == -1)
{
@@ -412,41 +277,6 @@
return ret;
}
-static void
-read_cb(gpointer data, gint source, PurpleInputCondition cond)
-{
- MsnServConn *servconn;
- char buf[MSN_BUF_LEN];
- gssize len;
-
- servconn = data;
-
- if (servconn->type == MSN_SERVCONN_NS)
- servconn->session->account->gc->last_received = time(NULL);
-
- len = read(servconn->fd, buf, sizeof(buf) - 1);
- if (len < 0 && errno == EAGAIN)
- return;
- if (len <= 0) {
- purple_debug_error("msn", "servconn %03d read error, "
- "len: %" G_GSSIZE_FORMAT ", errno: %d, error: %s\n",
- servconn->num, len, errno, g_strerror(errno));
- msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_READ, NULL);
-
- return;
- }
-
- buf[len] = '\0';
-
- servconn->rx_buf = g_realloc(servconn->rx_buf, len + servconn->rx_len + 1);
- memcpy(servconn->rx_buf + servconn->rx_len, buf, len + 1);
- servconn->rx_len += len;
-
- servconn = msn_servconn_process_data(servconn);
- if (servconn)
- servconn_timeout_renew(servconn);
-}
-
MsnServConn *msn_servconn_process_data(MsnServConn *servconn)
{
char *cur, *end, *old_rx_buf;
--- a/libpurple/protocols/msn/session.c Wed Dec 17 14:14:57 2014 +0000
+++ b/libpurple/protocols/msn/session.c Tue Dec 23 00:35:52 2014 -0500
@@ -114,14 +114,12 @@
}
gboolean
-msn_session_connect(MsnSession *session, const char *host, int port,
- gboolean http_method)
+msn_session_connect(MsnSession *session, const char *host, int port)
{
g_return_val_if_fail(session != NULL, FALSE);
g_return_val_if_fail(!session->connected, TRUE);
session->connected = TRUE;
- session->http_method = http_method;
if (session->notification == NULL)
{
--- a/libpurple/protocols/msn/session.h Wed Dec 17 14:14:57 2014 +0000
+++ b/libpurple/protocols/msn/session.h Tue Dec 23 00:35:52 2014 -0500
@@ -82,7 +82,6 @@
gboolean connected:1;
gboolean logged_in:1; /**< A temporal flag to ignore local buddy list adds. */
gboolean destroying:1; /**< A flag that states if the session is being destroyed. */
- gboolean http_method:1;
gboolean enable_mpop:1; /**< Use Multiple Points of Presence? */
int adl_fqy; /**< A count of ADL/FQY so status is only changed once. */
guint login_timeout; /**< Timeout to force status change if ADL/FQY fail. */
@@ -145,13 +144,11 @@
* @param session The MSN session.
* @param host The dispatch server host.
* @param port The dispatch server port.
- * @param http_method Whether to use or not http_method.
*
* @return @c TRUE on success, @c FALSE on failure.
*/
gboolean msn_session_connect(MsnSession *session,
- const char *host, int port,
- gboolean http_method);
+ const char *host, int port);
/**
* Disconnects from an MSN session.
--- a/libpurple/protocols/msn/switchboard.c Wed Dec 17 14:14:57 2014 +0000
+++ b/libpurple/protocols/msn/switchboard.c Tue Dec 23 00:35:52 2014 -0500
@@ -214,21 +214,6 @@
**************************************************************************/
static void
-send_clientcaps(MsnSwitchBoard *swboard)
-{
- MsnMessage *msg;
-
- msg = msn_message_new(MSN_MSG_CAPS);
- msn_message_set_content_type(msg, "text/x-clientcaps");
- msn_message_set_flag(msg, 'U');
- msn_message_set_bin_data(msg, MSN_CLIENTINFO, strlen(MSN_CLIENTINFO));
-
- msn_switchboard_send_msg(swboard, msg, TRUE);
-
- msn_message_unref(msg);
-}
-
-static void
msn_switchboard_add_user(MsnSwitchBoard *swboard, const char *user)
{
MsnCmdProc *cmdproc;
@@ -656,22 +641,17 @@
static void
joi_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
{
- MsnSession *session;
MsnSwitchBoard *swboard;
const char *passport;
passport = cmd->params[0];
- session = cmdproc->session;
swboard = cmdproc->data;
msn_switchboard_add_user(swboard, passport);
msn_sbconn_process_queue(swboard);
- if (!session->http_method)
- send_clientcaps(swboard);
-
if (swboard->closed)
msn_switchboard_close(swboard);
}