libpurple/protocols/msn/httpconn.c

Mon, 13 Jul 2009 05:01:42 +0000

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Mon, 13 Jul 2009 05:01:42 +0000
changeset 27776
60d79d68cde1
parent 27691
d77b2890043e
child 27905
a50992124f03
permissions
-rw-r--r--

On MSN, pop up an "invite message" request similar to oscar, and send that
in the add request. We really should try and move this into the add buddy
dialog instead of an extra prompt.

Fixes #8503.

10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
1 /**
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
2 * @file httpmethod.c HTTP connection method
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
3 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4 * purple
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
5 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
6 * Purple is the legal property of its developers, whose names are too numerous
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
7 * to list here. Please refer to the COPYRIGHT file distributed with this
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
8 * source distribution.
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
9 *
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
10 * This program is free software; you can redistribute it and/or modify
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
11 * it under the terms of the GNU General Public License as published by
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
13 * (at your option) any later version.
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
14 *
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
15 * This program is distributed in the hope that it will be useful,
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
18 * GNU General Public License for more details.
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
19 *
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
20 * You should have received a copy of the GNU General Public License
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
21 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19832
diff changeset
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
23 */
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
24 #include "msn.h"
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
25 #include "debug.h"
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
26 #include "httpconn.h"
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
27
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
28 typedef struct
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
29 {
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
30 MsnHttpConn *httpconn;
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
31 char *body;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
32 size_t body_len;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
33 } MsnHttpQueueData;
10568
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10543
diff changeset
34
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12323
diff changeset
35 static void
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
36 msn_httpconn_process_queue(MsnHttpConn *httpconn)
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
37 {
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
38 httpconn->waiting_response = FALSE;
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12323
diff changeset
39
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
40 if (httpconn->queue != NULL)
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
41 {
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
42 MsnHttpQueueData *queue_data;
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
43
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
44 queue_data = (MsnHttpQueueData *)httpconn->queue->data;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
45
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
46 httpconn->queue = g_list_remove(httpconn->queue, queue_data);
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
47
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
48 msn_httpconn_write(queue_data->httpconn,
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
49 queue_data->body,
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
50 queue_data->body_len);
10568
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10543
diff changeset
51
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
52 g_free(queue_data->body);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
53 g_free(queue_data);
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
54 }
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
55 }
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
56
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
57 static gboolean
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
58 msn_httpconn_parse_data(MsnHttpConn *httpconn, const char *buf,
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
59 size_t size, char **ret_buf, size_t *ret_size,
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
60 gboolean *error)
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
61 {
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
62 const char *s, *c;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
63 char *header, *body;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
64 const char *body_start;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
65 char *tmp;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
66 size_t body_len = 0;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
67
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
68 g_return_val_if_fail(httpconn != NULL, FALSE);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
69 g_return_val_if_fail(buf != NULL, FALSE);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
70 g_return_val_if_fail(size > 0, FALSE);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
71 g_return_val_if_fail(ret_buf != NULL, FALSE);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
72 g_return_val_if_fail(ret_size != NULL, FALSE);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
73 g_return_val_if_fail(error != NULL, FALSE);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
74
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
75 #if 0
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
76 purple_debug_info("msn", "HTTP: parsing data {%s}\n", buf);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
77 #endif
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
78
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
79 /* Healthy defaults. */
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
80 body = NULL;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
81
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
82 *ret_buf = NULL;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
83 *ret_size = 0;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
84 *error = FALSE;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
85
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
86 /* First, some tests to see if we have a full block of stuff. */
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
87 if (((strncmp(buf, "HTTP/1.1 200 OK\r\n", 17) != 0) &&
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
88 (strncmp(buf, "HTTP/1.1 100 Continue\r\n", 23) != 0)) &&
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
89 ((strncmp(buf, "HTTP/1.0 200 OK\r\n", 17) != 0) &&
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
90 (strncmp(buf, "HTTP/1.0 100 Continue\r\n", 23) != 0)))
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
91 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
92 *error = TRUE;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
93
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
94 return FALSE;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
95 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
96
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
97 if (strncmp(buf, "HTTP/1.1 100 Continue\r\n", 23) == 0)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
98 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
99 if ((s = strstr(buf, "\r\n\r\n")) == NULL)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
100 return FALSE;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
101
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
102 s += 4;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
103
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
104 if (*s == '\0')
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
105 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
106 *ret_buf = g_strdup("");
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
107 *ret_size = 0;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
108
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
109 msn_httpconn_process_queue(httpconn);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
110
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
111 return TRUE;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
112 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
113
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
114 buf = s;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
115 size -= (s - buf);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
116 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
117
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
118 if ((s = strstr(buf, "\r\n\r\n")) == NULL)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
119 /* Need to wait for the full HTTP header to arrive */
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
120 return FALSE;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
121
24667
ea4a31429bbd Make the two "read_cb()" functions more similar, and fix a rare
Mark Doliner <markdoliner@pidgin.im>
parents: 24664
diff changeset
122 s += 4; /* Skip \r\n\r\n */
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
123 header = g_strndup(buf, s - buf);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
124 body_start = s;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
125 body_len = size - (body_start - buf);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
126
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
127 if ((s = purple_strcasestr(header, "Content-Length: ")) != NULL)
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
128 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
129 int tmp_len;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
130
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
131 s += strlen("Content-Length: ");
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
132
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
133 if ((c = strchr(s, '\r')) == NULL)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
134 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
135 g_free(header);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
136
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
137 return FALSE;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
138 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
139
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
140 tmp = g_strndup(s, c - s);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
141 tmp_len = atoi(tmp);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
142 g_free(tmp);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
143
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
144 if (body_len != tmp_len)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
145 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
146 /* Need to wait for the full packet to arrive */
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
147
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
148 g_free(header);
10568
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10543
diff changeset
149
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
150 #if 0
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
151 purple_debug_warning("msn",
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
152 "body length (%d) != content length (%d)\n",
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
153 body_len, tmp_len);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
154 #endif
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
155
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
156 return FALSE;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
157 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
158 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
159
24608
9f21d921daaf It should be more efficient to just use g_mallc() and then manually
Mark Doliner <markdoliner@pidgin.im>
parents: 24607
diff changeset
160 body = g_malloc(body_len + 1);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
161 memcpy(body, body_start, body_len);
24608
9f21d921daaf It should be more efficient to just use g_mallc() and then manually
Mark Doliner <markdoliner@pidgin.im>
parents: 24607
diff changeset
162 body[body_len] = '\0';
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
163
27691
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25698
diff changeset
164 if (purple_debug_is_verbose())
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25698
diff changeset
165 purple_debug_misc("msn", "Incoming HTTP buffer (header): {%s}\n",
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25698
diff changeset
166 header);
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
167
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
168 /* Now we should be able to process the data. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
169 if ((s = purple_strcasestr(header, "X-MSN-Messenger: ")) != NULL)
10568
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10543
diff changeset
170 {
21010
2bd8577a08e5 Fix some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 20119
diff changeset
171 gchar *full_session_id = NULL, *gw_ip = NULL, *session_action = NULL;
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
172 char *t, *session_id;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
173 char **elems, **cur, **tokens;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
174
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
175 full_session_id = gw_ip = session_action = NULL;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
176
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
177 s += strlen("X-MSN-Messenger: ");
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
178
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
179 if ((c = strchr(s, '\r')) == NULL)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
180 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
181 msn_session_set_error(httpconn->session,
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
182 MSN_ERROR_HTTP_MALFORMED, NULL);
19832
84b69b21672b Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15884
diff changeset
183 purple_debug_error("msn", "Malformed X-MSN-Messenger field.\n{%s}\n",
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
184 buf);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
185
24667
ea4a31429bbd Make the two "read_cb()" functions more similar, and fix a rare
Mark Doliner <markdoliner@pidgin.im>
parents: 24664
diff changeset
186 g_free(header);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
187 g_free(body);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
188 return FALSE;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
189 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
190
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
191 tmp = g_strndup(s, c - s);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
192
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
193 elems = g_strsplit(tmp, "; ", 0);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
194
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
195 for (cur = elems; *cur != NULL; cur++)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
196 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
197 tokens = g_strsplit(*cur, "=", 2);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
198
21010
2bd8577a08e5 Fix some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 20119
diff changeset
199 if (strcmp(tokens[0], "SessionID") == 0) {
2bd8577a08e5 Fix some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 20119
diff changeset
200 g_free(full_session_id);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
201 full_session_id = tokens[1];
21010
2bd8577a08e5 Fix some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 20119
diff changeset
202 } else if (strcmp(tokens[0], "GW-IP") == 0) {
2bd8577a08e5 Fix some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 20119
diff changeset
203 g_free(gw_ip);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
204 gw_ip = tokens[1];
21010
2bd8577a08e5 Fix some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 20119
diff changeset
205 } else if (strcmp(tokens[0], "Session") == 0) {
2bd8577a08e5 Fix some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 20119
diff changeset
206 g_free(session_action);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
207 session_action = tokens[1];
21010
2bd8577a08e5 Fix some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 20119
diff changeset
208 } else
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
209 g_free(tokens[1]);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
210
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
211 g_free(tokens[0]);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
212 /* Don't free each of the tokens, only the array. */
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
213 g_free(tokens);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
214 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
215
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
216 g_strfreev(elems);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
217
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
218 g_free(tmp);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
219
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
220 t = strchr(full_session_id, '.');
25698
57998efdffd5 Prevent a NUL ptr deref caused by a malformed session_id.
Daniel Atallah <datallah@pidgin.im>
parents: 24668
diff changeset
221 if (t != NULL)
57998efdffd5 Prevent a NUL ptr deref caused by a malformed session_id.
Daniel Atallah <datallah@pidgin.im>
parents: 24668
diff changeset
222 session_id = g_strndup(full_session_id, t - full_session_id);
57998efdffd5 Prevent a NUL ptr deref caused by a malformed session_id.
Daniel Atallah <datallah@pidgin.im>
parents: 24668
diff changeset
223 else {
57998efdffd5 Prevent a NUL ptr deref caused by a malformed session_id.
Daniel Atallah <datallah@pidgin.im>
parents: 24668
diff changeset
224 purple_debug_error("msn", "Malformed full_session_id[%s]\n",
57998efdffd5 Prevent a NUL ptr deref caused by a malformed session_id.
Daniel Atallah <datallah@pidgin.im>
parents: 24668
diff changeset
225 full_session_id ? full_session_id : NULL);
57998efdffd5 Prevent a NUL ptr deref caused by a malformed session_id.
Daniel Atallah <datallah@pidgin.im>
parents: 24668
diff changeset
226 session_id = g_strdup(full_session_id);
57998efdffd5 Prevent a NUL ptr deref caused by a malformed session_id.
Daniel Atallah <datallah@pidgin.im>
parents: 24668
diff changeset
227 }
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
228
24607
5e7b29f6bb2b Move a few lines to eliminate the need for the "wasted" variable here.
Mark Doliner <markdoliner@pidgin.im>
parents: 24031
diff changeset
229 if (session_action == NULL || strcmp(session_action, "close") != 0)
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
230 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
231 g_free(httpconn->full_session_id);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
232 httpconn->full_session_id = full_session_id;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
233
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
234 g_free(httpconn->session_id);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
235 httpconn->session_id = session_id;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
236
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
237 g_free(httpconn->host);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
238 httpconn->host = gw_ip;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
239 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
240 else
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
241 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
242 MsnServConn *servconn;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
243
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
244 /* It's going to die. */
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
245 /* poor thing */
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
246
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
247 servconn = httpconn->servconn;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
248
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
249 /* I'll be honest, I don't fully understand all this, but this
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
250 * causes crashes, Stu. */
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
251 /* if (servconn != NULL)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
252 servconn->wasted = TRUE; */
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
253
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
254 g_free(full_session_id);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
255 g_free(session_id);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
256 g_free(gw_ip);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
257 }
24607
5e7b29f6bb2b Move a few lines to eliminate the need for the "wasted" variable here.
Mark Doliner <markdoliner@pidgin.im>
parents: 24031
diff changeset
258
5e7b29f6bb2b Move a few lines to eliminate the need for the "wasted" variable here.
Mark Doliner <markdoliner@pidgin.im>
parents: 24031
diff changeset
259 g_free(session_action);
10568
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10543
diff changeset
260 }
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10543
diff changeset
261
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
262 g_free(header);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
263
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
264 *ret_buf = body;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
265 *ret_size = body_len;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
266
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
267 msn_httpconn_process_queue(httpconn);
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
268
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
269 return TRUE;
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
270 }
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
271
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
272 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
273 read_cb(gpointer data, gint source, PurpleInputCondition cond)
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
274 {
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
275 MsnHttpConn *httpconn;
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
276 MsnServConn *servconn;
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
277 char buf[MSN_BUF_LEN];
24031
f9c3efb8afa6 Fix up some types.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23856
diff changeset
278 gssize len;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
279 char *result_msg = NULL;
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
280 size_t result_len = 0;
13977
f19693309b58 [gaim-migrate @ 16416]
Mark Doliner <markdoliner@pidgin.im>
parents: 13976
diff changeset
281 gboolean error = FALSE;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
282
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
283 httpconn = data;
24667
ea4a31429bbd Make the two "read_cb()" functions more similar, and fix a rare
Mark Doliner <markdoliner@pidgin.im>
parents: 24664
diff changeset
284 servconn = httpconn->servconn;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
285
24667
ea4a31429bbd Make the two "read_cb()" functions more similar, and fix a rare
Mark Doliner <markdoliner@pidgin.im>
parents: 24664
diff changeset
286 if (servconn->type == MSN_SERVCONN_NS)
24668
853a6d533d60 Separate the parsing of data into a separate function from the reading of
Mark Doliner <markdoliner@pidgin.im>
parents: 24667
diff changeset
287 servconn->session->account->gc->last_received = time(NULL);
24667
ea4a31429bbd Make the two "read_cb()" functions more similar, and fix a rare
Mark Doliner <markdoliner@pidgin.im>
parents: 24664
diff changeset
288
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
289 len = read(httpconn->fd, buf, sizeof(buf) - 1);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12323
diff changeset
290 if (len < 0 && errno == EAGAIN)
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12323
diff changeset
291 return;
24667
ea4a31429bbd Make the two "read_cb()" functions more similar, and fix a rare
Mark Doliner <markdoliner@pidgin.im>
parents: 24664
diff changeset
292 if (len <= 0) {
ea4a31429bbd Make the two "read_cb()" functions more similar, and fix a rare
Mark Doliner <markdoliner@pidgin.im>
parents: 24664
diff changeset
293 purple_debug_error("msn", "HTTP: servconn %03d read error, "
ea4a31429bbd Make the two "read_cb()" functions more similar, and fix a rare
Mark Doliner <markdoliner@pidgin.im>
parents: 24664
diff changeset
294 "len: %" G_GSSIZE_FORMAT ", errno: %d, error: %s\n",
ea4a31429bbd Make the two "read_cb()" functions more similar, and fix a rare
Mark Doliner <markdoliner@pidgin.im>
parents: 24664
diff changeset
295 servconn->num, len, error, g_strerror(errno));
ea4a31429bbd Make the two "read_cb()" functions more similar, and fix a rare
Mark Doliner <markdoliner@pidgin.im>
parents: 24664
diff changeset
296 msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_READ);
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
297
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
298 return;
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
299 }
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
300
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
301 buf[len] = '\0';
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
302
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
303 httpconn->rx_buf = g_realloc(httpconn->rx_buf, len + httpconn->rx_len + 1);
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
304 memcpy(httpconn->rx_buf + httpconn->rx_len, buf, len + 1);
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
305 httpconn->rx_len += len;
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
306
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
307 if (!msn_httpconn_parse_data(httpconn, httpconn->rx_buf, httpconn->rx_len,
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
308 &result_msg, &result_len, &error))
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
309 {
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
310 /* Either we must wait for more input, or something went wrong */
10568
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10543
diff changeset
311 if (error)
24667
ea4a31429bbd Make the two "read_cb()" functions more similar, and fix a rare
Mark Doliner <markdoliner@pidgin.im>
parents: 24664
diff changeset
312 msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_READ);
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
313
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
314 return;
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
315 }
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
316
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
317 if (error)
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
318 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
319 purple_debug_error("msn", "HTTP: Special error\n");
24667
ea4a31429bbd Make the two "read_cb()" functions more similar, and fix a rare
Mark Doliner <markdoliner@pidgin.im>
parents: 24664
diff changeset
320 msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_READ);
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
321
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
322 return;
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
323 }
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
324
13631
b077f2d6f20e [gaim-migrate @ 16017]
Daniel Atallah <datallah@pidgin.im>
parents: 13517
diff changeset
325 g_free(httpconn->rx_buf);
10533
4c2ad22fad20 [gaim-migrate @ 11862]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10504
diff changeset
326 httpconn->rx_buf = NULL;
4c2ad22fad20 [gaim-migrate @ 11862]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10504
diff changeset
327 httpconn->rx_len = 0;
4c2ad22fad20 [gaim-migrate @ 11862]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10504
diff changeset
328
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
329 if (result_len == 0)
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
330 {
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
331 /* Nothing to do here */
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
332 #if 0
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
333 purple_debug_info("msn", "HTTP: nothing to do here\n");
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
334 #endif
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
335 g_free(result_msg);
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
336 return;
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
337 }
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
338
13271
93767a806808 [gaim-migrate @ 15636]
Daniel Atallah <datallah@pidgin.im>
parents: 13201
diff changeset
339 g_free(servconn->rx_buf);
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
340 servconn->rx_buf = result_msg;
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
341 servconn->rx_len = result_len;
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
342
24668
853a6d533d60 Separate the parsing of data into a separate function from the reading of
Mark Doliner <markdoliner@pidgin.im>
parents: 24667
diff changeset
343 msn_servconn_process_data(servconn);
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
344 }
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
345
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
346 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
347 httpconn_write_cb(gpointer data, gint source, PurpleInputCondition cond)
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
348 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
349 MsnHttpConn *httpconn;
24031
f9c3efb8afa6 Fix up some types.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23856
diff changeset
350 gssize ret;
f9c3efb8afa6 Fix up some types.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23856
diff changeset
351 int writelen;
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
352
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
353 httpconn = data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
354 writelen = purple_circ_buffer_get_max_read(httpconn->tx_buf);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
355
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
356 if (writelen == 0)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
357 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
358 purple_input_remove(httpconn->tx_handler);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
359 httpconn->tx_handler = 0;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
360 return;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
361 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
362
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
363 ret = write(httpconn->fd, httpconn->tx_buf->outptr, writelen);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
364 if (ret <= 0)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
365 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
366 if ((errno == EAGAIN) || (errno == EWOULDBLOCK))
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
367 /* No worries */
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
368 return;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
369
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
370 /* Error! */
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
371 msn_servconn_got_error(httpconn->servconn, MSN_SERVCONN_ERROR_WRITE);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
372 return;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
373 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
374
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
375 purple_circ_buffer_mark_read(httpconn->tx_buf, ret);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
376
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
377 /* TODO: I don't think these 2 lines are needed. Remove them? */
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
378 if (ret == writelen)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
379 httpconn_write_cb(data, source, cond);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
380 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
381
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
382 static gboolean
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
383 write_raw(MsnHttpConn *httpconn, const char *data, size_t data_len)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
384 {
23078
4900794b4c3b Build fixes for MSVC
Daniel Atallah <datallah@pidgin.im>
parents: 21063
diff changeset
385 gssize res; /* result of the write operation */
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
386
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
387 if (httpconn->tx_handler == 0)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
388 res = write(httpconn->fd, data, data_len);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
389 else
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
390 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
391 res = -1;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
392 errno = EAGAIN;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
393 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
394
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
395 if ((res <= 0) && ((errno != EAGAIN) && (errno != EWOULDBLOCK)))
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
396 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
397 msn_servconn_got_error(httpconn->servconn, MSN_SERVCONN_ERROR_WRITE);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
398 return FALSE;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
399 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
400
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
401 if (res < 0 || res < data_len)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
402 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
403 if (res < 0)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
404 res = 0;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
405 if (httpconn->tx_handler == 0 && httpconn->fd)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
406 httpconn->tx_handler = purple_input_add(httpconn->fd,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
407 PURPLE_INPUT_WRITE, httpconn_write_cb, httpconn);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
408 purple_circ_buffer_append(httpconn->tx_buf, data + res,
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
409 data_len - res);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
410 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
411
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
412 return TRUE;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
413 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
414
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
415 static char *
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
416 msn_httpconn_proxy_auth(MsnHttpConn *httpconn)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
417 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
418 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
419 PurpleProxyInfo *gpi;
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
420 const char *username, *password;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
421 char *auth = NULL;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
422
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
423 account = httpconn->session->account;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
424
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
425 gpi = purple_proxy_get_setup(account);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
426
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
427 if (gpi == NULL || !(purple_proxy_info_get_type(gpi) == PURPLE_PROXY_HTTP ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
428 purple_proxy_info_get_type(gpi) == PURPLE_PROXY_USE_ENVVAR))
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
429 return NULL;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
430
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
431 username = purple_proxy_info_get_username(gpi);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
432 password = purple_proxy_info_get_password(gpi);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
433
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
434 if (username != NULL) {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
435 char *tmp;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
436 auth = g_strdup_printf("%s:%s", username, password ? password : "");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
437 tmp = purple_base64_encode((const guchar *)auth, strlen(auth));
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
438 g_free(auth);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
439 auth = g_strdup_printf("Proxy-Authorization: Basic %s\r\n", tmp);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
440 g_free(tmp);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
441 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
442
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
443 return auth;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
444 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
445
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
446 static gboolean
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
447 msn_httpconn_poll(gpointer data)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
448 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
449 MsnHttpConn *httpconn;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
450 char *header;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
451 char *auth;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
452
13977
f19693309b58 [gaim-migrate @ 16416]
Mark Doliner <markdoliner@pidgin.im>
parents: 13976
diff changeset
453 httpconn = data;
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
454
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
455 g_return_val_if_fail(httpconn != NULL, FALSE);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
456
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
457 if ((httpconn->host == NULL) || (httpconn->full_session_id == NULL))
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
458 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
459 /* There's no need to poll if the session is not fully established */
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
460 return TRUE;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
461 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
462
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
463 if (httpconn->waiting_response)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
464 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
465 /* There's no need to poll if we're already waiting for a response */
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
466 return TRUE;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
467 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
468
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
469 auth = msn_httpconn_proxy_auth(httpconn);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
470
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
471 header = g_strdup_printf(
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
472 "POST http://%s/gateway/gateway.dll?Action=poll&SessionID=%s HTTP/1.1\r\n"
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
473 "Accept: */*\r\n"
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
474 "Accept-Language: en-us\r\n"
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
475 "User-Agent: MSMSGS\r\n"
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
476 "Host: %s\r\n"
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
477 "Proxy-Connection: Keep-Alive\r\n"
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
478 "%s" /* Proxy auth */
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
479 "Connection: Keep-Alive\r\n"
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
480 "Pragma: no-cache\r\n"
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
481 "Content-Type: application/x-msn-messenger\r\n"
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
482 "Content-Length: 0\r\n\r\n",
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
483 httpconn->host,
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
484 httpconn->full_session_id,
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
485 httpconn->host,
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
486 auth ? auth : "");
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
487
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
488 g_free(auth);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
489
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
490 if (write_raw(httpconn, header, strlen(header)))
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
491 httpconn->waiting_response = TRUE;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
492
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
493 g_free(header);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
494
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
495 return TRUE;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
496 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
497
23078
4900794b4c3b Build fixes for MSVC
Daniel Atallah <datallah@pidgin.im>
parents: 21063
diff changeset
498 gssize
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
499 msn_httpconn_write(MsnHttpConn *httpconn, const char *body, size_t body_len)
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
500 {
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
501 char *params;
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12323
diff changeset
502 char *data;
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
503 int header_len;
10568
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10543
diff changeset
504 char *auth;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
505 const char *server_types[] = { "NS", "SB" };
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
506 const char *server_type;
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
507 char *host;
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
508 MsnServConn *servconn;
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
509
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
510 /* TODO: remove http data from servconn */
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
511
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
512 g_return_val_if_fail(httpconn != NULL, 0);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12323
diff changeset
513 g_return_val_if_fail(body != NULL, 0);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
514 g_return_val_if_fail(body_len > 0, 0);
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
515
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
516 servconn = httpconn->servconn;
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
517
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
518 if (httpconn->waiting_response)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
519 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
520 MsnHttpQueueData *queue_data = g_new0(MsnHttpQueueData, 1);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
521
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
522 queue_data->httpconn = httpconn;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
523 queue_data->body = g_memdup(body, body_len);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
524 queue_data->body_len = body_len;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
525
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
526 httpconn->queue = g_list_append(httpconn->queue, queue_data);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
527
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
528 return body_len;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
529 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
530
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
531 server_type = server_types[servconn->type];
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
532
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12323
diff changeset
533 if (httpconn->virgin)
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
534 {
23817
aff31c9b1fad Clean up some #define's in msn.h and various supporting changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23078
diff changeset
535 /* QuLogic: This doesn't look right to me, but it still seems to work */
aff31c9b1fad Clean up some #define's in msn.h and various supporting changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23078
diff changeset
536 host = MSN_HTTPCONN_SERVER;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
537
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
538 /* The first time servconn->host is the host we should connect to. */
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
539 params = g_strdup_printf("Action=open&Server=%s&IP=%s",
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
540 server_type,
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
541 servconn->host);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12323
diff changeset
542 httpconn->virgin = FALSE;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
543 }
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
544 else
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
545 {
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
546 /* The rest of the times servconn->host is the gateway host. */
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
547 host = httpconn->host;
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
548
10568
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10543
diff changeset
549 if (host == NULL || httpconn->full_session_id == NULL)
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10543
diff changeset
550 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
551 purple_debug_warning("msn", "Attempted HTTP write before session is established\n");
10568
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10543
diff changeset
552 return -1;
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10543
diff changeset
553 }
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10543
diff changeset
554
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
555 params = g_strdup_printf("SessionID=%s",
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12323
diff changeset
556 httpconn->full_session_id);
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
557 }
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
558
10568
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10543
diff changeset
559 auth = msn_httpconn_proxy_auth(httpconn);
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10543
diff changeset
560
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12323
diff changeset
561 data = g_strdup_printf(
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
562 "POST http://%s/gateway/gateway.dll?%s HTTP/1.1\r\n"
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
563 "Accept: */*\r\n"
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
564 "Accept-Language: en-us\r\n"
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
565 "User-Agent: MSMSGS\r\n"
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
566 "Host: %s\r\n"
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
567 "Proxy-Connection: Keep-Alive\r\n"
10568
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10543
diff changeset
568 "%s" /* Proxy auth */
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
569 "Connection: Keep-Alive\r\n"
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
570 "Pragma: no-cache\r\n"
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
571 "Content-Type: application/x-msn-messenger\r\n"
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
572 "Content-Length: %d\r\n\r\n",
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
573 host,
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
574 params,
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
575 host,
10568
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10543
diff changeset
576 auth ? auth : "",
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
577 (int) body_len);
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
578
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
579 g_free(params);
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
580
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12323
diff changeset
581 g_free(auth);
10568
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10543
diff changeset
582
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
583 header_len = strlen(data);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
584 data = g_realloc(data, header_len + body_len);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
585 memcpy(data + header_len, body, body_len);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
586
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
587 if (write_raw(httpconn, data, header_len + body_len))
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
588 httpconn->waiting_response = TRUE;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
589
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12323
diff changeset
590 g_free(data);
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
591
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
592 return body_len;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
593 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
594
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
595 MsnHttpConn *
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
596 msn_httpconn_new(MsnServConn *servconn)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
597 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
598 MsnHttpConn *httpconn;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
599
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
600 g_return_val_if_fail(servconn != NULL, NULL);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
601
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
602 httpconn = g_new0(MsnHttpConn, 1);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
603
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
604 purple_debug_info("msn", "new httpconn (%p)\n", httpconn);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
605
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
606 /* TODO: Remove this */
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
607 httpconn->session = servconn->session;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
608
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
609 httpconn->servconn = servconn;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
610
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
611 httpconn->tx_buf = purple_circ_buffer_new(MSN_BUF_LEN);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
612 httpconn->tx_handler = 0;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
613
20119
b1896729e970 applied changes from b23d40378bee58e6e5a79f04f532b50daf43f802
Richard Laager <rlaager@pidgin.im>
parents: 19989
diff changeset
614 httpconn->fd = -1;
b1896729e970 applied changes from b23d40378bee58e6e5a79f04f532b50daf43f802
Richard Laager <rlaager@pidgin.im>
parents: 19989
diff changeset
615
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
616 return httpconn;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
617 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
618
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
619 void
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
620 msn_httpconn_destroy(MsnHttpConn *httpconn)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
621 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
622 g_return_if_fail(httpconn != NULL);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
623
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
624 purple_debug_info("msn", "destroy httpconn (%p)\n", httpconn);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
625
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
626 if (httpconn->connected)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
627 msn_httpconn_disconnect(httpconn);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
628
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
629 g_free(httpconn->full_session_id);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
630
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
631 g_free(httpconn->session_id);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
632
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
633 g_free(httpconn->host);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
634
21019
ad88a22c1e85 More leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 21010
diff changeset
635 while (httpconn->queue != NULL) {
ad88a22c1e85 More leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 21010
diff changeset
636 MsnHttpQueueData *queue_data;
ad88a22c1e85 More leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 21010
diff changeset
637
ad88a22c1e85 More leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 21010
diff changeset
638 queue_data = (MsnHttpQueueData *) httpconn->queue->data;
ad88a22c1e85 More leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 21010
diff changeset
639
21063
911e85f207c7 Fix some leaks caused by misuse of g_list_remove_link() instead of g_list_delete_link().
Daniel Atallah <datallah@pidgin.im>
parents: 21019
diff changeset
640 httpconn->queue = g_list_delete_link(httpconn->queue, httpconn->queue);
21019
ad88a22c1e85 More leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 21010
diff changeset
641
ad88a22c1e85 More leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 21010
diff changeset
642 g_free(queue_data->body);
ad88a22c1e85 More leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 21010
diff changeset
643 g_free(queue_data);
ad88a22c1e85 More leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 21010
diff changeset
644 }
ad88a22c1e85 More leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 21010
diff changeset
645
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
646 purple_circ_buffer_destroy(httpconn->tx_buf);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
647 if (httpconn->tx_handler > 0)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
648 purple_input_remove(httpconn->tx_handler);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
649
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
650 g_free(httpconn);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
651 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
652
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
653 static void
14174
1615a99529dc [gaim-migrate @ 16746]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
654 connect_cb(gpointer data, gint source, const gchar *error_message)
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
655 {
14174
1615a99529dc [gaim-migrate @ 16746]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
656 MsnHttpConn *httpconn;
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
657
14174
1615a99529dc [gaim-migrate @ 16746]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
658 httpconn = data;
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
659 httpconn->connect_data = NULL;
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
660 httpconn->fd = source;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
661
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
662 if (source >= 0)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
663 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
664 httpconn->inpa = purple_input_add(httpconn->fd, PURPLE_INPUT_READ,
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
665 read_cb, data);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
666
24619
5ece4c87ea96 Use purple_timeout_add_seconds() instead of purple_timeout_add() in a
Mark Doliner <markdoliner@pidgin.im>
parents: 24608
diff changeset
667 httpconn->timer = purple_timeout_add_seconds(2, msn_httpconn_poll, httpconn);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
668
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
669 msn_httpconn_process_queue(httpconn);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
670 }
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
671 else
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
672 {
24031
f9c3efb8afa6 Fix up some types.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23856
diff changeset
673 purple_debug_error("msn", "HTTP: Connection error: %s\n",
f9c3efb8afa6 Fix up some types.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23856
diff changeset
674 error_message ? error_message : "(null)");
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
675 msn_servconn_got_error(httpconn->servconn, MSN_SERVCONN_ERROR_CONNECT);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
676 }
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
677 }
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
678
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
679 gboolean
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
680 msn_httpconn_connect(MsnHttpConn *httpconn, const char *host, int port)
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
681 {
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
682 g_return_val_if_fail(httpconn != NULL, FALSE);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
683 g_return_val_if_fail(host != NULL, FALSE);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
684 g_return_val_if_fail(port > 0, FALSE);
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
685
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
686 if (httpconn->connected)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
687 msn_httpconn_disconnect(httpconn);
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
688
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
689 httpconn->connect_data = purple_proxy_connect(NULL, httpconn->session->account,
19989
1f1bb361a75a A fix from Laszlo Pandy to make the MSN HTTP Method work again. Fixes #2638 and should make a number of people happy. This introduces a new string that isn't marked as translatable for 2.2.0 because it is so late in the game.
Daniel Atallah <datallah@pidgin.im>
parents: 19859
diff changeset
690 host, 80, connect_cb, httpconn);
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
691
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
692 if (httpconn->connect_data != NULL)
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
693 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
694 httpconn->waiting_response = TRUE;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
695 httpconn->connected = TRUE;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
696 }
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
697
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
698 return httpconn->connected;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
699 }
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
700
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
701 void
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
702 msn_httpconn_disconnect(MsnHttpConn *httpconn)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
703 {
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
704 g_return_if_fail(httpconn != NULL);
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
705
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
706 if (!httpconn->connected)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
707 return;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
708
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
709 if (httpconn->connect_data != NULL)
14174
1615a99529dc [gaim-migrate @ 16746]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
710 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
711 purple_proxy_connect_cancel(httpconn->connect_data);
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
712 httpconn->connect_data = NULL;
14174
1615a99529dc [gaim-migrate @ 16746]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
713 }
1615a99529dc [gaim-migrate @ 16746]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
714
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
715 if (httpconn->timer)
14174
1615a99529dc [gaim-migrate @ 16746]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
716 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
717 purple_timeout_remove(httpconn->timer);
14174
1615a99529dc [gaim-migrate @ 16746]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
718 httpconn->timer = 0;
1615a99529dc [gaim-migrate @ 16746]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
719 }
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
720
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
721 if (httpconn->inpa > 0)
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
722 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
723 purple_input_remove(httpconn->inpa);
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
724 httpconn->inpa = 0;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
725 }
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
726
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
727 close(httpconn->fd);
14174
1615a99529dc [gaim-migrate @ 16746]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
728 httpconn->fd = -1;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
729
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
730 g_free(httpconn->rx_buf);
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
731 httpconn->rx_buf = NULL;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
732 httpconn->rx_len = 0;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
733
13976
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
734 httpconn->connected = FALSE;
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
735
2543396bd00e [gaim-migrate @ 16414]
Mark Doliner <markdoliner@pidgin.im>
parents: 13713
diff changeset
736 /* msn_servconn_disconnect(httpconn->servconn); */
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
737 }

mercurial