Sun, 11 Nov 2007 12:57:52 +0000
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
old fools like me who prefer the stability of our MSNP9 code over the
features of MSNP14 can enable this using the --disable-msnp14 ./configure
option.
If we want to release from i.p.p and MSN stability is the only blocker, we
can trivially flick the default to use MSNP9 in configure.ac
|
21481
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
1 | /** |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
2 | * @file httpmethod.c HTTP connection method |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
3 | * |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
4 | * purple |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
5 | * |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
6 | * Purple is the legal property of its developers, whose names are too numerous |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
7 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
8 | * source distribution. |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
9 | * |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
10 | * This program is free software; you can redistribute it and/or modify |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
11 | * it under the terms of the GNU General Public License as published by |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
12 | * the Free Software Foundation; either version 2 of the License, or |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
13 | * (at your option) any later version. |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
14 | * |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
15 | * This program is distributed in the hope that it will be useful, |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
18 | * GNU General Public License for more details. |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
19 | * |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
20 | * You should have received a copy of the GNU General Public License |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
21 | * along with this program; if not, write to the Free Software |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
23 | */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
24 | #include "msn.h" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
25 | #include "debug.h" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
26 | #include "httpconn.h" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
27 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
28 | typedef struct |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
29 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
30 | MsnHttpConn *httpconn; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
31 | char *body; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
32 | size_t body_len; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
33 | } MsnHttpQueueData; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
34 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
35 | static void |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
36 | msn_httpconn_process_queue(MsnHttpConn *httpconn) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
37 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
38 | httpconn->waiting_response = FALSE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
39 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
40 | if (httpconn->queue != NULL) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
41 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
42 | MsnHttpQueueData *queue_data; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
43 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
44 | queue_data = (MsnHttpQueueData *)httpconn->queue->data; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
45 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
46 | httpconn->queue = g_list_remove(httpconn->queue, queue_data); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
47 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
48 | msn_httpconn_write(queue_data->httpconn, |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
49 | queue_data->body, |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
50 | queue_data->body_len); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
51 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
52 | g_free(queue_data->body); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
53 | g_free(queue_data); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
54 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
55 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
56 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
57 | static gboolean |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
58 | msn_httpconn_parse_data(MsnHttpConn *httpconn, const char *buf, |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
59 | size_t size, char **ret_buf, size_t *ret_size, |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
60 | gboolean *error) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
61 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
62 | const char *s, *c; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
63 | char *header, *body; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
64 | const char *body_start; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
65 | char *tmp; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
66 | size_t body_len = 0; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
67 | gboolean wasted = FALSE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
68 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
69 | g_return_val_if_fail(httpconn != NULL, FALSE); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
70 | g_return_val_if_fail(buf != NULL, FALSE); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
71 | g_return_val_if_fail(size > 0, FALSE); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
72 | g_return_val_if_fail(ret_buf != NULL, FALSE); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
73 | g_return_val_if_fail(ret_size != NULL, FALSE); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
74 | g_return_val_if_fail(error != NULL, FALSE); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
75 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
76 | #if 0 |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
77 | purple_debug_info("msn", "HTTP: parsing data {%s}\n", buf); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
78 | #endif |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
79 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
80 | /* Healthy defaults. */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
81 | body = NULL; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
82 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
83 | *ret_buf = NULL; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
84 | *ret_size = 0; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
85 | *error = FALSE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
86 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
87 | /* First, some tests to see if we have a full block of stuff. */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
88 | if (((strncmp(buf, "HTTP/1.1 200 OK\r\n", 17) != 0) && |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
89 | (strncmp(buf, "HTTP/1.1 100 Continue\r\n", 23) != 0)) && |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
90 | ((strncmp(buf, "HTTP/1.0 200 OK\r\n", 17) != 0) && |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
91 | (strncmp(buf, "HTTP/1.0 100 Continue\r\n", 23) != 0))) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
92 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
93 | *error = TRUE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
94 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
95 | return FALSE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
96 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
97 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
98 | if (strncmp(buf, "HTTP/1.1 100 Continue\r\n", 23) == 0) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
99 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
100 | if ((s = strstr(buf, "\r\n\r\n")) == NULL) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
101 | return FALSE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
102 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
103 | s += 4; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
104 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
105 | if (*s == '\0') |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
106 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
107 | *ret_buf = g_strdup(""); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
108 | *ret_size = 0; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
109 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
110 | msn_httpconn_process_queue(httpconn); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
111 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
112 | return TRUE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
113 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
114 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
115 | buf = s; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
116 | size -= (s - buf); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
117 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
118 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
119 | if ((s = strstr(buf, "\r\n\r\n")) == NULL) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
120 | /* Need to wait for the full HTTP header to arrive */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
121 | return FALSE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
122 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
123 | s += 4; /* Skip \r\n */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
124 | header = g_strndup(buf, s - buf); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
125 | body_start = s; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
126 | body_len = size - (body_start - buf); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
127 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
128 | if ((s = purple_strcasestr(header, "Content-Length: ")) != NULL) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
129 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
130 | int tmp_len; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
131 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
132 | s += strlen("Content-Length: "); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
133 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
134 | if ((c = strchr(s, '\r')) == NULL) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
135 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
136 | g_free(header); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
137 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
138 | return FALSE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
139 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
140 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
141 | tmp = g_strndup(s, c - s); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
142 | tmp_len = atoi(tmp); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
143 | g_free(tmp); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
144 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
145 | if (body_len != tmp_len) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
146 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
147 | /* Need to wait for the full packet to arrive */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
148 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
149 | g_free(header); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
150 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
151 | #if 0 |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
152 | purple_debug_warning("msn", |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
153 | "body length (%d) != content length (%d)\n", |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
154 | body_len, tmp_len); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
155 | #endif |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
156 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
157 | return FALSE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
158 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
159 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
160 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
161 | body = g_malloc0(body_len + 1); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
162 | memcpy(body, body_start, body_len); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
163 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
164 | #ifdef MSN_DEBUG_HTTP |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
165 | purple_debug_misc("msn", "Incoming HTTP buffer (header): {%s\r\n}\n", |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
166 | header); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
167 | #endif |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
168 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
169 | /* Now we should be able to process the data. */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
170 | if ((s = purple_strcasestr(header, "X-MSN-Messenger: ")) != NULL) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
171 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
172 | char *full_session_id, *gw_ip, *session_action; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
173 | char *t, *session_id; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
174 | char **elems, **cur, **tokens; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
175 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
176 | full_session_id = gw_ip = session_action = NULL; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
177 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
178 | s += strlen("X-MSN-Messenger: "); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
179 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
180 | if ((c = strchr(s, '\r')) == NULL) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
181 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
182 | msn_session_set_error(httpconn->session, |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
183 | MSN_ERROR_HTTP_MALFORMED, NULL); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
184 | purple_debug_error("msn", "Malformed X-MSN-Messenger field.\n{%s}\n", |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
185 | buf); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
186 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
187 | g_free(body); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
188 | return FALSE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
189 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
190 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
191 | tmp = g_strndup(s, c - s); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
192 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
193 | elems = g_strsplit(tmp, "; ", 0); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
194 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
195 | for (cur = elems; *cur != NULL; cur++) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
196 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
197 | tokens = g_strsplit(*cur, "=", 2); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
198 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
199 | if (strcmp(tokens[0], "SessionID") == 0) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
200 | full_session_id = tokens[1]; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
201 | else if (strcmp(tokens[0], "GW-IP") == 0) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
202 | gw_ip = tokens[1]; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
203 | else if (strcmp(tokens[0], "Session") == 0) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
204 | session_action = tokens[1]; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
205 | else |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
206 | g_free(tokens[1]); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
207 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
208 | g_free(tokens[0]); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
209 | /* Don't free each of the tokens, only the array. */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
210 | g_free(tokens); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
211 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
212 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
213 | g_strfreev(elems); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
214 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
215 | g_free(tmp); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
216 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
217 | if ((session_action != NULL) && (strcmp(session_action, "close") == 0)) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
218 | wasted = TRUE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
219 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
220 | g_free(session_action); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
221 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
222 | t = strchr(full_session_id, '.'); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
223 | session_id = g_strndup(full_session_id, t - full_session_id); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
224 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
225 | if (!wasted) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
226 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
227 | g_free(httpconn->full_session_id); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
228 | httpconn->full_session_id = full_session_id; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
229 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
230 | g_free(httpconn->session_id); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
231 | httpconn->session_id = session_id; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
232 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
233 | g_free(httpconn->host); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
234 | httpconn->host = gw_ip; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
235 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
236 | else |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
237 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
238 | MsnServConn *servconn; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
239 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
240 | /* It's going to die. */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
241 | /* poor thing */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
242 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
243 | servconn = httpconn->servconn; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
244 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
245 | /* I'll be honest, I don't fully understand all this, but this |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
246 | * causes crashes, Stu. */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
247 | /* if (servconn != NULL) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
248 | servconn->wasted = TRUE; */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
249 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
250 | g_free(full_session_id); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
251 | g_free(session_id); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
252 | g_free(gw_ip); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
253 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
254 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
255 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
256 | g_free(header); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
257 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
258 | *ret_buf = body; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
259 | *ret_size = body_len; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
260 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
261 | msn_httpconn_process_queue(httpconn); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
262 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
263 | return TRUE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
264 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
265 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
266 | static void |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
267 | read_cb(gpointer data, gint source, PurpleInputCondition cond) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
268 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
269 | MsnHttpConn *httpconn; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
270 | MsnServConn *servconn; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
271 | MsnSession *session; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
272 | char buf[MSN_BUF_LEN]; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
273 | char *cur, *end, *old_rx_buf; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
274 | int len, cur_len; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
275 | char *result_msg = NULL; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
276 | size_t result_len = 0; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
277 | gboolean error = FALSE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
278 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
279 | httpconn = data; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
280 | servconn = NULL; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
281 | session = httpconn->session; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
282 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
283 | len = read(httpconn->fd, buf, sizeof(buf) - 1); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
284 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
285 | if (len < 0 && errno == EAGAIN) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
286 | return; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
287 | else if (len <= 0) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
288 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
289 | purple_debug_error("msn", "HTTP: Read error\n"); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
290 | msn_servconn_got_error(httpconn->servconn, MSN_SERVCONN_ERROR_READ); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
291 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
292 | return; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
293 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
294 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
295 | buf[len] = '\0'; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
296 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
297 | httpconn->rx_buf = g_realloc(httpconn->rx_buf, len + httpconn->rx_len + 1); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
298 | memcpy(httpconn->rx_buf + httpconn->rx_len, buf, len + 1); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
299 | httpconn->rx_len += len; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
300 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
301 | if (!msn_httpconn_parse_data(httpconn, httpconn->rx_buf, httpconn->rx_len, |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
302 | &result_msg, &result_len, &error)) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
303 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
304 | /* Either we must wait for more input, or something went wrong */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
305 | if (error) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
306 | msn_servconn_got_error(httpconn->servconn, MSN_SERVCONN_ERROR_READ); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
307 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
308 | return; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
309 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
310 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
311 | httpconn->servconn->processing = FALSE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
312 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
313 | servconn = httpconn->servconn; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
314 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
315 | if (error) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
316 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
317 | purple_debug_error("msn", "HTTP: Special error\n"); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
318 | msn_servconn_got_error(httpconn->servconn, MSN_SERVCONN_ERROR_READ); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
319 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
320 | return; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
321 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
322 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
323 | g_free(httpconn->rx_buf); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
324 | httpconn->rx_buf = NULL; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
325 | httpconn->rx_len = 0; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
326 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
327 | if (result_len == 0) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
328 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
329 | /* Nothing to do here */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
330 | #if 0 |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
331 | purple_debug_info("msn", "HTTP: nothing to do here\n"); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
332 | #endif |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
333 | g_free(result_msg); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
334 | return; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
335 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
336 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
337 | g_free(servconn->rx_buf); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
338 | servconn->rx_buf = result_msg; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
339 | servconn->rx_len = result_len; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
340 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
341 | end = old_rx_buf = servconn->rx_buf; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
342 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
343 | servconn->processing = TRUE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
344 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
345 | do |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
346 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
347 | cur = end; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
348 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
349 | if (servconn->payload_len) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
350 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
351 | if (servconn->payload_len > servconn->rx_len) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
352 | /* The payload is still not complete. */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
353 | break; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
354 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
355 | cur_len = servconn->payload_len; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
356 | end += cur_len; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
357 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
358 | else |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
359 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
360 | end = strstr(cur, "\r\n"); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
361 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
362 | if (end == NULL) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
363 | /* The command is still not complete. */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
364 | break; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
365 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
366 | *end = '\0'; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
367 | end += 2; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
368 | cur_len = end - cur; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
369 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
370 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
371 | servconn->rx_len -= cur_len; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
372 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
373 | if (servconn->payload_len) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
374 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
375 | msn_cmdproc_process_payload(servconn->cmdproc, cur, cur_len); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
376 | servconn->payload_len = 0; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
377 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
378 | else |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
379 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
380 | msn_cmdproc_process_cmd_text(servconn->cmdproc, cur); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
381 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
382 | } while (servconn->connected && servconn->rx_len > 0); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
383 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
384 | if (servconn->connected) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
385 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
386 | if (servconn->rx_len > 0) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
387 | servconn->rx_buf = g_memdup(cur, servconn->rx_len); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
388 | else |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
389 | servconn->rx_buf = NULL; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
390 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
391 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
392 | servconn->processing = FALSE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
393 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
394 | if (servconn->wasted) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
395 | msn_servconn_destroy(servconn); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
396 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
397 | g_free(old_rx_buf); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
398 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
399 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
400 | static void |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
401 | httpconn_write_cb(gpointer data, gint source, PurpleInputCondition cond) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
402 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
403 | MsnHttpConn *httpconn; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
404 | int ret, writelen; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
405 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
406 | httpconn = data; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
407 | writelen = purple_circ_buffer_get_max_read(httpconn->tx_buf); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
408 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
409 | if (writelen == 0) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
410 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
411 | purple_input_remove(httpconn->tx_handler); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
412 | httpconn->tx_handler = 0; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
413 | return; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
414 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
415 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
416 | ret = write(httpconn->fd, httpconn->tx_buf->outptr, writelen); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
417 | if (ret <= 0) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
418 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
419 | if ((errno == EAGAIN) || (errno == EWOULDBLOCK)) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
420 | /* No worries */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
421 | return; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
422 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
423 | /* Error! */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
424 | msn_servconn_got_error(httpconn->servconn, MSN_SERVCONN_ERROR_WRITE); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
425 | return; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
426 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
427 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
428 | purple_circ_buffer_mark_read(httpconn->tx_buf, ret); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
429 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
430 | /* TODO: I don't think these 2 lines are needed. Remove them? */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
431 | if (ret == writelen) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
432 | httpconn_write_cb(data, source, cond); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
433 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
434 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
435 | static gboolean |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
436 | write_raw(MsnHttpConn *httpconn, const char *data, size_t data_len) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
437 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
438 | ssize_t res; /* result of the write operation */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
439 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
440 | if (httpconn->tx_handler == 0) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
441 | res = write(httpconn->fd, data, data_len); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
442 | else |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
443 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
444 | res = -1; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
445 | errno = EAGAIN; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
446 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
447 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
448 | if ((res <= 0) && ((errno != EAGAIN) && (errno != EWOULDBLOCK))) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
449 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
450 | msn_servconn_got_error(httpconn->servconn, MSN_SERVCONN_ERROR_WRITE); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
451 | return FALSE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
452 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
453 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
454 | if (res < 0 || res < data_len) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
455 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
456 | if (res < 0) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
457 | res = 0; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
458 | if (httpconn->tx_handler == 0 && httpconn->fd) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
459 | httpconn->tx_handler = purple_input_add(httpconn->fd, |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
460 | PURPLE_INPUT_WRITE, httpconn_write_cb, httpconn); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
461 | purple_circ_buffer_append(httpconn->tx_buf, data + res, |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
462 | data_len - res); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
463 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
464 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
465 | return TRUE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
466 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
467 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
468 | static char * |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
469 | msn_httpconn_proxy_auth(MsnHttpConn *httpconn) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
470 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
471 | PurpleAccount *account; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
472 | PurpleProxyInfo *gpi; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
473 | const char *username, *password; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
474 | char *auth = NULL; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
475 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
476 | account = httpconn->session->account; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
477 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
478 | gpi = purple_proxy_get_setup(account); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
479 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
480 | if (gpi == NULL || !(purple_proxy_info_get_type(gpi) == PURPLE_PROXY_HTTP || |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
481 | purple_proxy_info_get_type(gpi) == PURPLE_PROXY_USE_ENVVAR)) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
482 | return NULL; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
483 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
484 | username = purple_proxy_info_get_username(gpi); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
485 | password = purple_proxy_info_get_password(gpi); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
486 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
487 | if (username != NULL) { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
488 | char *tmp; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
489 | auth = g_strdup_printf("%s:%s", username, password ? password : ""); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
490 | tmp = purple_base64_encode((const guchar *)auth, strlen(auth)); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
491 | g_free(auth); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
492 | auth = g_strdup_printf("Proxy-Authorization: Basic %s\r\n", tmp); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
493 | g_free(tmp); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
494 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
495 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
496 | return auth; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
497 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
498 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
499 | static gboolean |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
500 | msn_httpconn_poll(gpointer data) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
501 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
502 | MsnHttpConn *httpconn; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
503 | char *header; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
504 | char *auth; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
505 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
506 | httpconn = data; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
507 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
508 | g_return_val_if_fail(httpconn != NULL, FALSE); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
509 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
510 | if ((httpconn->host == NULL) || (httpconn->full_session_id == NULL)) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
511 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
512 | /* There's no need to poll if the session is not fully established */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
513 | return TRUE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
514 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
515 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
516 | if (httpconn->waiting_response) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
517 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
518 | /* There's no need to poll if we're already waiting for a response */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
519 | return TRUE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
520 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
521 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
522 | auth = msn_httpconn_proxy_auth(httpconn); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
523 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
524 | header = g_strdup_printf( |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
525 | "POST http://%s/gateway/gateway.dll?Action=poll&SessionID=%s HTTP/1.1\r\n" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
526 | "Accept: */*\r\n" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
527 | "Accept-Language: en-us\r\n" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
528 | "User-Agent: MSMSGS\r\n" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
529 | "Host: %s\r\n" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
530 | "Proxy-Connection: Keep-Alive\r\n" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
531 | "%s" /* Proxy auth */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
532 | "Connection: Keep-Alive\r\n" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
533 | "Pragma: no-cache\r\n" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
534 | "Content-Type: application/x-msn-messenger\r\n" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
535 | "Content-Length: 0\r\n\r\n", |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
536 | httpconn->host, |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
537 | httpconn->full_session_id, |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
538 | httpconn->host, |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
539 | auth ? auth : ""); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
540 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
541 | g_free(auth); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
542 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
543 | if (write_raw(httpconn, header, strlen(header))) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
544 | httpconn->waiting_response = TRUE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
545 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
546 | g_free(header); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
547 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
548 | return TRUE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
549 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
550 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
551 | ssize_t |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
552 | msn_httpconn_write(MsnHttpConn *httpconn, const char *body, size_t body_len) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
553 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
554 | char *params; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
555 | char *data; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
556 | int header_len; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
557 | char *auth; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
558 | const char *server_types[] = { "NS", "SB" }; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
559 | const char *server_type; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
560 | char *host; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
561 | MsnServConn *servconn; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
562 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
563 | /* TODO: remove http data from servconn */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
564 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
565 | g_return_val_if_fail(httpconn != NULL, 0); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
566 | g_return_val_if_fail(body != NULL, 0); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
567 | g_return_val_if_fail(body_len > 0, 0); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
568 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
569 | servconn = httpconn->servconn; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
570 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
571 | if (httpconn->waiting_response) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
572 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
573 | MsnHttpQueueData *queue_data = g_new0(MsnHttpQueueData, 1); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
574 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
575 | queue_data->httpconn = httpconn; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
576 | queue_data->body = g_memdup(body, body_len); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
577 | queue_data->body_len = body_len; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
578 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
579 | httpconn->queue = g_list_append(httpconn->queue, queue_data); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
580 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
581 | return body_len; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
582 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
583 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
584 | server_type = server_types[servconn->type]; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
585 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
586 | if (httpconn->virgin) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
587 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
588 | host = "gateway.messenger.hotmail.com"; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
589 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
590 | /* The first time servconn->host is the host we should connect to. */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
591 | params = g_strdup_printf("Action=open&Server=%s&IP=%s", |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
592 | server_type, |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
593 | servconn->host); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
594 | httpconn->virgin = FALSE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
595 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
596 | else |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
597 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
598 | /* The rest of the times servconn->host is the gateway host. */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
599 | host = httpconn->host; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
600 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
601 | if (host == NULL || httpconn->full_session_id == NULL) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
602 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
603 | purple_debug_warning("msn", "Attempted HTTP write before session is established\n"); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
604 | return -1; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
605 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
606 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
607 | params = g_strdup_printf("SessionID=%s", |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
608 | httpconn->full_session_id); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
609 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
610 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
611 | auth = msn_httpconn_proxy_auth(httpconn); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
612 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
613 | data = g_strdup_printf( |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
614 | "POST http://%s/gateway/gateway.dll?%s HTTP/1.1\r\n" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
615 | "Accept: */*\r\n" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
616 | "Accept-Language: en-us\r\n" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
617 | "User-Agent: MSMSGS\r\n" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
618 | "Host: %s\r\n" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
619 | "Proxy-Connection: Keep-Alive\r\n" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
620 | "%s" /* Proxy auth */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
621 | "Connection: Keep-Alive\r\n" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
622 | "Pragma: no-cache\r\n" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
623 | "Content-Type: application/x-msn-messenger\r\n" |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
624 | "Content-Length: %d\r\n\r\n", |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
625 | host, |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
626 | params, |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
627 | host, |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
628 | auth ? auth : "", |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
629 | (int) body_len); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
630 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
631 | g_free(params); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
632 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
633 | g_free(auth); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
634 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
635 | header_len = strlen(data); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
636 | data = g_realloc(data, header_len + body_len); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
637 | memcpy(data + header_len, body, body_len); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
638 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
639 | if (write_raw(httpconn, data, header_len + body_len)) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
640 | httpconn->waiting_response = TRUE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
641 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
642 | g_free(data); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
643 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
644 | return body_len; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
645 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
646 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
647 | MsnHttpConn * |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
648 | msn_httpconn_new(MsnServConn *servconn) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
649 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
650 | MsnHttpConn *httpconn; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
651 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
652 | g_return_val_if_fail(servconn != NULL, NULL); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
653 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
654 | httpconn = g_new0(MsnHttpConn, 1); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
655 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
656 | purple_debug_info("msn", "new httpconn (%p)\n", httpconn); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
657 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
658 | /* TODO: Remove this */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
659 | httpconn->session = servconn->session; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
660 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
661 | httpconn->servconn = servconn; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
662 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
663 | httpconn->tx_buf = purple_circ_buffer_new(MSN_BUF_LEN); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
664 | httpconn->tx_handler = 0; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
665 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
666 | return httpconn; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
667 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
668 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
669 | void |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
670 | msn_httpconn_destroy(MsnHttpConn *httpconn) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
671 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
672 | g_return_if_fail(httpconn != NULL); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
673 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
674 | purple_debug_info("msn", "destroy httpconn (%p)\n", httpconn); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
675 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
676 | if (httpconn->connected) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
677 | msn_httpconn_disconnect(httpconn); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
678 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
679 | g_free(httpconn->full_session_id); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
680 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
681 | g_free(httpconn->session_id); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
682 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
683 | g_free(httpconn->host); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
684 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
685 | purple_circ_buffer_destroy(httpconn->tx_buf); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
686 | if (httpconn->tx_handler > 0) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
687 | purple_input_remove(httpconn->tx_handler); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
688 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
689 | g_free(httpconn); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
690 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
691 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
692 | static void |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
693 | connect_cb(gpointer data, gint source, const gchar *error_message) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
694 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
695 | MsnHttpConn *httpconn; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
696 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
697 | httpconn = data; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
698 | httpconn->connect_data = NULL; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
699 | httpconn->fd = source; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
700 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
701 | if (source >= 0) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
702 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
703 | httpconn->inpa = purple_input_add(httpconn->fd, PURPLE_INPUT_READ, |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
704 | read_cb, data); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
705 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
706 | httpconn->timer = purple_timeout_add(2000, msn_httpconn_poll, httpconn); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
707 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
708 | msn_httpconn_process_queue(httpconn); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
709 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
710 | else |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
711 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
712 | purple_debug_error("msn", "HTTP: Connection error\n"); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
713 | msn_servconn_got_error(httpconn->servconn, MSN_SERVCONN_ERROR_CONNECT); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
714 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
715 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
716 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
717 | gboolean |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
718 | msn_httpconn_connect(MsnHttpConn *httpconn, const char *host, int port) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
719 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
720 | g_return_val_if_fail(httpconn != NULL, FALSE); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
721 | g_return_val_if_fail(host != NULL, FALSE); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
722 | g_return_val_if_fail(port > 0, FALSE); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
723 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
724 | if (httpconn->connected) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
725 | msn_httpconn_disconnect(httpconn); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
726 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
727 | httpconn->connect_data = purple_proxy_connect(NULL, httpconn->session->account, |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
728 | host, 80, connect_cb, httpconn); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
729 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
730 | if (httpconn->connect_data != NULL) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
731 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
732 | httpconn->waiting_response = TRUE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
733 | httpconn->connected = TRUE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
734 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
735 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
736 | return httpconn->connected; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
737 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
738 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
739 | void |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
740 | msn_httpconn_disconnect(MsnHttpConn *httpconn) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
741 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
742 | g_return_if_fail(httpconn != NULL); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
743 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
744 | if (!httpconn->connected) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
745 | return; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
746 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
747 | if (httpconn->connect_data != NULL) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
748 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
749 | purple_proxy_connect_cancel(httpconn->connect_data); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
750 | httpconn->connect_data = NULL; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
751 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
752 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
753 | if (httpconn->timer) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
754 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
755 | purple_timeout_remove(httpconn->timer); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
756 | httpconn->timer = 0; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
757 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
758 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
759 | if (httpconn->inpa > 0) |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
760 | { |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
761 | purple_input_remove(httpconn->inpa); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
762 | httpconn->inpa = 0; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
763 | } |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
764 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
765 | close(httpconn->fd); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
766 | httpconn->fd = -1; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
767 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
768 | g_free(httpconn->rx_buf); |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
769 | httpconn->rx_buf = NULL; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
770 | httpconn->rx_len = 0; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
771 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
772 | httpconn->connected = FALSE; |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
773 | |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
774 | /* msn_servconn_disconnect(httpconn->servconn); */ |
|
d52b697eaae7
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
diff
changeset
|
775 | } |