Mercurial > pidgin
annotate plugins/msn/msn.c @ 2038:cb4fbcdae9eb
[gaim-migrate @ 2048]
msn updates
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Sat, 16 Jun 2001 17:55:57 +0000 |
parents | b86f639ff99f |
children | 859e9c2c5813 |
rev | line source |
---|---|
1514
0dd012166152
[gaim-migrate @ 1524]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1499
diff
changeset
|
1 #include "config.h" |
1259 | 2 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
3 #include <stdlib.h> |
1259 | 4 #include <gtk/gtk.h> |
5 #include <string.h> | |
6 #include <stdio.h> | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
7 #include <unistd.h> |
1851
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
8 #include <ctype.h> |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
9 #include "gaim.h" |
1259 | 10 #include "prpl.h" |
1851
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
11 #include "proxy.h" |
1259 | 12 #include "md5.h" |
13 | |
1284 | 14 #include "pixmaps/msn_online.xpm" |
1285 | 15 #include "pixmaps/msn_away.xpm" |
1259 | 16 |
1567 | 17 #define MSN_BUF_LEN 8192 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
18 #define MIME_HEADER "MIME-Version: 1.0\r\n" \ |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
19 "Content-Type: text/plain; charset=UTF-8\r\n" \ |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
20 "X-MMS-IM-Format: FN=MS%20Sans%20Serif; EF=; CO=0; PF=0\r\n\r\n" |
1259 | 21 |
22 #define MSN_ONLINE 1 | |
23 #define MSN_BUSY 2 | |
24 #define MSN_IDLE 3 | |
25 #define MSN_BRB 4 | |
26 #define MSN_AWAY 5 | |
27 #define MSN_PHONE 6 | |
28 #define MSN_LUNCH 7 | |
29 #define MSN_OFFLINE 8 | |
30 #define MSN_HIDDEN 9 | |
31 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
32 #define USEROPT_HOTMAIL 0 |
1598 | 33 |
1259 | 34 struct msn_data { |
35 int fd; | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
36 int trId; |
1567 | 37 int inpa; |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
38 GSList *switches; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
39 GSList *fl; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
40 gboolean imported; |
1259 | 41 }; |
42 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
43 struct msn_switchboard { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
44 struct gaim_connection *gc; |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
45 struct conversation *chat; |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
46 int fd; |
1259 | 47 int inpa; |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
48 char *sessid; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
49 char *auth; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
50 int trId; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
51 int total; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
52 char *user; |
1584 | 53 char *txqueue; |
1259 | 54 }; |
55 | |
1991
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
56 struct msn_buddy { |
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
57 char *user; |
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
58 char *friend; |
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
59 }; |
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
60 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
61 static void msn_login_callback(gpointer, gint, GdkInputCondition); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
62 static void msn_login_xfr_connect(gpointer, gint, GdkInputCondition); |
1588 | 63 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
64 #define GET_NEXT(tmp) while (*(tmp) && !isspace(*(tmp))) \ |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
65 (tmp)++; \ |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
66 *(tmp)++ = 0; \ |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
67 while (*(tmp) && isspace(*(tmp))) \ |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
68 (tmp)++; |
1259 | 69 |
1282 | 70 char *name() |
71 { | |
1259 | 72 return "MSN"; |
73 } | |
74 | |
1282 | 75 char *description() |
76 { | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
77 return "Allows gaim to use the MSN protocol."; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
78 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
79 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
80 static char *msn_name() |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
81 { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
82 return "MSN"; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
83 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
84 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
85 static char *msn_normalize(const char *s) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
86 { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
87 static char buf[BUF_LEN]; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
88 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
89 g_return_val_if_fail(s != NULL, NULL); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
90 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
91 g_snprintf(buf, sizeof(buf), "%s%s", s, strchr(s, '@') ? "" : "@hotmail.com"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
92 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
93 return buf; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
94 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
95 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
96 static int msn_write(int fd, void *data, int len) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
97 { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
98 debug_printf("C: %s", data); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
99 return write(fd, data, len); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
100 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
101 |
1986
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
102 static char *url_decode(const char *msg) |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
103 { |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
104 static char buf[MSN_BUF_LEN]; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
105 int i, j = 0; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
106 |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
107 bzero(buf, sizeof(buf)); |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
108 for (i = 0; i < strlen(msg); i++) { |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
109 char hex[3]; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
110 if (msg[i] != '%') { |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
111 buf[j++] = msg[i]; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
112 continue; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
113 } |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
114 g_snprintf(hex, sizeof(hex), "%s", msg + ++i); |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
115 i++; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
116 sscanf(hex, "%x", (unsigned int *)&buf[j++]); |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
117 } |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
118 buf[j] = 0; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
119 |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
120 return buf; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
121 } |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
122 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
123 static char *handle_errcode(char *buf, gboolean show) |
1282 | 124 { |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
125 int errcode; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
126 static char msg[MSN_BUF_LEN]; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
127 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
128 buf[4] = 0; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
129 errcode = atoi(buf); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
130 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
131 switch (errcode) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
132 case 200: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
133 g_snprintf(msg, sizeof(msg), "Syntax Error (probably a Gaim bug)"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
134 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
135 case 201: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
136 g_snprintf(msg, sizeof(msg), "Invalid Parameter (probably a Gaim bug)"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
137 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
138 case 205: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
139 g_snprintf(msg, sizeof(msg), "Invalid User"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
140 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
141 case 206: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
142 g_snprintf(msg, sizeof(msg), "Fully Qualified Domain Name missing"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
143 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
144 case 207: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
145 g_snprintf(msg, sizeof(msg), "Already Login"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
146 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
147 case 208: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
148 g_snprintf(msg, sizeof(msg), "Invalid Username"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
149 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
150 case 209: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
151 g_snprintf(msg, sizeof(msg), "Invalid Friendly Name"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
152 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
153 case 210: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
154 g_snprintf(msg, sizeof(msg), "List Full"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
155 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
156 case 215: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
157 g_snprintf(msg, sizeof(msg), "Already there"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
158 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
159 case 216: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
160 g_snprintf(msg, sizeof(msg), "Not on list"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
161 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
162 case 218: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
163 g_snprintf(msg, sizeof(msg), "Already in the mode"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
164 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
165 case 219: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
166 g_snprintf(msg, sizeof(msg), "Already in opposite list"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
167 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
168 case 280: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
169 g_snprintf(msg, sizeof(msg), "Switchboard failed"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
170 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
171 case 281: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
172 g_snprintf(msg, sizeof(msg), "Notify Transfer failed"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
173 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
174 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
175 case 300: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
176 g_snprintf(msg, sizeof(msg), "Required fields missing"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
177 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
178 case 302: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
179 g_snprintf(msg, sizeof(msg), "Not logged in"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
180 break; |
1567 | 181 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
182 case 500: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
183 g_snprintf(msg, sizeof(msg), "Internal server error"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
184 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
185 case 501: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
186 g_snprintf(msg, sizeof(msg), "Database server error"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
187 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
188 case 510: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
189 g_snprintf(msg, sizeof(msg), "File operation error"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
190 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
191 case 520: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
192 g_snprintf(msg, sizeof(msg), "Memory allocation error"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
193 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
194 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
195 case 600: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
196 g_snprintf(msg, sizeof(msg), "Server busy"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
197 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
198 case 601: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
199 g_snprintf(msg, sizeof(msg), "Server unavailable"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
200 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
201 case 602: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
202 g_snprintf(msg, sizeof(msg), "Peer Notification server down"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
203 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
204 case 603: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
205 g_snprintf(msg, sizeof(msg), "Database connect error"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
206 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
207 case 604: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
208 g_snprintf(msg, sizeof(msg), "Server is going down (abandon ship)"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
209 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
210 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
211 case 707: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
212 g_snprintf(msg, sizeof(msg), "Error creating connection"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
213 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
214 case 711: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
215 g_snprintf(msg, sizeof(msg), "Unable to write"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
216 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
217 case 712: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
218 g_snprintf(msg, sizeof(msg), "Session overload"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
219 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
220 case 713: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
221 g_snprintf(msg, sizeof(msg), "User is too active"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
222 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
223 case 714: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
224 g_snprintf(msg, sizeof(msg), "Too many sessions"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
225 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
226 case 715: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
227 g_snprintf(msg, sizeof(msg), "Not expected"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
228 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
229 case 717: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
230 g_snprintf(msg, sizeof(msg), "Bad friend file"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
231 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
232 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
233 case 911: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
234 g_snprintf(msg, sizeof(msg), "Authentication failed"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
235 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
236 case 913: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
237 g_snprintf(msg, sizeof(msg), "Not allowed when offline"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
238 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
239 case 920: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
240 g_snprintf(msg, sizeof(msg), "Not accepting new users"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
241 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
242 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
243 default: |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
244 g_snprintf(msg, sizeof(msg), "Unknown Error Code"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
245 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
246 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
247 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
248 if (show) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
249 do_error_dialog(msg, "MSN Error"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
250 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
251 return msg; |
1733 | 252 } |
253 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
254 static void handle_hotmail(struct gaim_connection *gc, char *data) |
1733 | 255 { |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
256 char *mailct, *mailp, *from = NULL, *subj = NULL, notice[MSN_BUF_LEN]; |
1733 | 257 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
258 if (gc->user->proto_opt[USEROPT_HOTMAIL][0] != '1') return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
259 mailct = strstr(data, "Content-Type: "); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
260 mailp = strstr(mailct, ";"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
261 if (mailct && mailp && (mailp > mailct) && |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
262 !strncmp(mailct, "Content-Type: text/x-msmsgsemailnotification", mailp - mailct - 1)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
263 from = strstr(mailp, "From: "); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
264 subj = strstr(mailp, "Subject: "); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
265 } |
1733 | 266 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
267 if (!from || !subj) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
268 return; |
1733 | 269 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
270 from += strlen("From: "); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
271 mailp = strstr(from, "\r\n"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
272 if (!mailp) return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
273 *mailp = 0; |
1733 | 274 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
275 subj += strlen("Subject: "); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
276 mailp = strstr(from, "\r\n"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
277 if (!mailp) return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
278 *mailp = 0; |
1833 | 279 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
280 g_snprintf(notice, sizeof(notice), "Mail from %s, re: %s", from, subj); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
281 do_error_dialog(notice, "New MSN Mail"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
282 } |
1733 | 283 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
284 static struct msn_switchboard *msn_find_switch(struct gaim_connection *gc, char *id) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
285 { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
286 struct msn_data *md = gc->proto_data; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
287 GSList *m = md->switches; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
288 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
289 while (m) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
290 struct msn_switchboard *ms = m->data; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
291 m = m->next; |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
292 if ((ms->total == 1) && !g_strcasecmp(ms->user, id)) |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
293 return ms; |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
294 } |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
295 |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
296 return NULL; |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
297 } |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
298 |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
299 static struct msn_switchboard *msn_find_switch_by_id(struct gaim_connection *gc, int id) |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
300 { |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
301 struct msn_data *md = gc->proto_data; |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
302 GSList *m = md->switches; |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
303 |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
304 while (m) { |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
305 struct msn_switchboard *ms = m->data; |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
306 m = m->next; |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
307 if (ms->chat && (ms->chat->id == id)) |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
308 return ms; |
1733 | 309 } |
310 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
311 return NULL; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
312 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
313 |
2014
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
314 static struct msn_switchboard *msn_find_writable_switch(struct gaim_connection *gc) |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
315 { |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
316 struct msn_data *md = gc->proto_data; |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
317 GSList *m = md->switches; |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
318 |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
319 while (m) { |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
320 struct msn_switchboard *ms = m->data; |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
321 m = m->next; |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
322 if (ms->txqueue) |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
323 return ms; |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
324 } |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
325 |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
326 return NULL; |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
327 } |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
328 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
329 static void msn_kill_switch(struct msn_switchboard *ms) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
330 { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
331 struct gaim_connection *gc = ms->gc; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
332 struct msn_data *md = gc->proto_data; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
333 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
334 gdk_input_remove(ms->inpa); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
335 close(ms->fd); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
336 if (ms->sessid) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
337 g_free(ms->sessid); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
338 g_free(ms->auth); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
339 if (ms->user) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
340 g_free(ms->user); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
341 if (ms->txqueue) |
2014
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
342 g_free(ms->txqueue); |
2024
b86f639ff99f
[gaim-migrate @ 2034]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2023
diff
changeset
|
343 if (ms->chat) |
b86f639ff99f
[gaim-migrate @ 2034]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2023
diff
changeset
|
344 serv_got_chat_left(gc, ms->chat->id); |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
345 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
346 md->switches = g_slist_remove(md->switches, ms); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
347 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
348 g_free(ms); |
1567 | 349 } |
1259 | 350 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
351 static void msn_switchboard_callback(gpointer data, gint source, GdkInputCondition cond) |
1572 | 352 { |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
353 struct msn_switchboard *ms = data; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
354 struct gaim_connection *gc = ms->gc; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
355 char buf[MSN_BUF_LEN]; |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
356 static int id = 0; |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
357 int i = 0; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
358 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
359 bzero(buf, sizeof(buf)); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
360 while ((read(ms->fd, buf + i, 1) > 0) && (buf[i++] != '\n')) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
361 if (i == sizeof(buf)) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
362 i--; /* yes i know this loses data but we shouldn't get messages this long |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
363 and it's better than possibly writing past our buffer */ |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
364 if (i == 0 || buf[i - 1] != '\n') { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
365 msn_kill_switch(ms); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
366 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
367 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
368 debug_printf("S: %s", buf); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
369 g_strchomp(buf); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
370 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
371 if (!g_strncasecmp(buf, "ACK", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
372 } else if (!g_strncasecmp(buf, "ANS", 3)) { |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
373 if (ms->chat) |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
374 add_chat_buddy(ms->chat, gc->username); |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
375 } else if (!g_strncasecmp(buf, "BYE", 3)) { |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
376 if (ms->chat) { |
2023
3ab2082d125f
[gaim-migrate @ 2033]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2021
diff
changeset
|
377 char *user, *tmp = buf; |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
378 GET_NEXT(tmp); |
2023
3ab2082d125f
[gaim-migrate @ 2033]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2021
diff
changeset
|
379 user = tmp; |
3ab2082d125f
[gaim-migrate @ 2033]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2021
diff
changeset
|
380 remove_chat_buddy(ms->chat, user); |
2038
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
381 } else |
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
382 msn_kill_switch(ms); |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
383 } else if (!g_strncasecmp(buf, "CAL", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
384 } else if (!g_strncasecmp(buf, "IRO", 3)) { |
2023
3ab2082d125f
[gaim-migrate @ 2033]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2021
diff
changeset
|
385 char *tot, *user, *tmp = buf; |
2014
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
386 |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
387 GET_NEXT(tmp); |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
388 GET_NEXT(tmp); |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
389 GET_NEXT(tmp); |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
390 tot = tmp; |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
391 GET_NEXT(tmp); |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
392 ms->total = atoi(tot); |
2023
3ab2082d125f
[gaim-migrate @ 2033]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2021
diff
changeset
|
393 user = tmp; |
2014
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
394 GET_NEXT(tmp); |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
395 |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
396 if (ms->total > 1) { |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
397 if (!ms->chat) |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
398 ms->chat = serv_got_joined_chat(gc, ++id, "MSN Chat"); |
2023
3ab2082d125f
[gaim-migrate @ 2033]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2021
diff
changeset
|
399 add_chat_buddy(ms->chat, user); |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
400 } |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
401 } else if (!g_strncasecmp(buf, "JOI", 3)) { |
2023
3ab2082d125f
[gaim-migrate @ 2033]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2021
diff
changeset
|
402 char *user, *tmp = buf; |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
403 GET_NEXT(tmp); |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
404 user = tmp; |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
405 GET_NEXT(tmp); |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
406 |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
407 if (ms->total == 1) { |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
408 ms->chat = serv_got_joined_chat(gc, ++id, "MSN Chat"); |
2023
3ab2082d125f
[gaim-migrate @ 2033]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2021
diff
changeset
|
409 add_chat_buddy(ms->chat, ms->user); |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
410 add_chat_buddy(ms->chat, gc->username); |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
411 g_free(ms->user); |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
412 ms->user = NULL; |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
413 } |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
414 if (ms->chat) |
2023
3ab2082d125f
[gaim-migrate @ 2033]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2021
diff
changeset
|
415 add_chat_buddy(ms->chat, user); |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
416 ms->total++; |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
417 if (ms->txqueue) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
418 g_snprintf(buf, sizeof(buf), "MSG %d N %d\r\n%s%s", ++ms->trId, |
1988
2bb74a5a574f
[gaim-migrate @ 1998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1987
diff
changeset
|
419 strlen(MIME_HEADER) + strlen(ms->txqueue), |
2bb74a5a574f
[gaim-migrate @ 1998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1987
diff
changeset
|
420 MIME_HEADER, ms->txqueue); |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
421 g_free(ms->txqueue); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
422 ms->txqueue = NULL; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
423 if (msn_write(ms->fd, buf, strlen(buf)) < 0) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
424 msn_kill_switch(ms); |
2014
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
425 debug_printf("\n"); |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
426 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
427 } else if (!g_strncasecmp(buf, "MSG", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
428 char *user, *tmp = buf; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
429 int length; |
2038
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
430 char *msg, *content, *utf; |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
431 int len; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
432 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
433 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
434 user = tmp; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
435 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
436 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
437 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
438 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
439 length = atoi(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
440 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
441 msg = g_new0(char, MAX(length + 1, MSN_BUF_LEN)); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
442 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
443 if (read(ms->fd, msg, length) != length) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
444 g_free(msg); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
445 hide_login_progress(gc, "Unable to read message"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
446 signoff(gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
447 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
448 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
449 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
450 |
1992
5121e706af6d
[gaim-migrate @ 2002]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1991
diff
changeset
|
451 content = strstr(msg, "Content-Type: "); |
2038
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
452 if (!content) { |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
453 g_free(msg); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
454 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
455 } |
2038
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
456 if (!g_strncasecmp(content, "Content-Type: text/plain", |
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
457 strlen("Content-Type: text/plain"))) { |
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
458 char *final, *skiphead; |
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
459 skiphead = strstr(msg, "\r\n\r\n"); |
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
460 if (!skiphead || !skiphead[4]) { |
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
461 g_free(msg); |
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
462 return; |
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
463 } |
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
464 skiphead += 4; |
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
465 utf = utf8_to_str(skiphead); |
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
466 len = MAX(strlen(utf) + 1, BUF_LEN); |
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
467 final = g_malloc(len); |
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
468 g_snprintf(final, len, "%s", utf); |
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
469 g_free(utf); |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
470 |
2038
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
471 if (ms->chat) |
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
472 serv_got_chat_in(gc, ms->chat->id, user, 0, final, time(NULL)); |
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
473 else |
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
474 serv_got_im(gc, user, final, 0, time(NULL)); |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
475 |
2038
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
476 g_free(final); |
cb4fbcdae9eb
[gaim-migrate @ 2048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2024
diff
changeset
|
477 } |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
478 g_free(msg); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
479 } else if (!g_strncasecmp(buf, "NAK", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
480 do_error_dialog("A message may not have been received.", "MSN Error"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
481 } else if (!g_strncasecmp(buf, "NLN", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
482 } else if (!g_strncasecmp(buf, "OUT", 3)) { |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
483 if (ms->chat) |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
484 serv_got_chat_left(gc, ms->chat->id); |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
485 msn_kill_switch(ms); |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
486 } else if (!g_strncasecmp(buf, "USR", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
487 /* good, we got USR, now we need to find out who we want to talk to */ |
2014
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
488 struct msn_switchboard *ms = msn_find_writable_switch(gc); |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
489 |
2014
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
490 if (!ms) |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
491 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
492 |
2014
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
493 g_snprintf(buf, sizeof(buf), "CAL %d %s\n", ++ms->trId, ms->user); |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
494 if (msn_write(ms->fd, buf, strlen(buf)) < 0) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
495 msn_kill_switch(ms); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
496 } else if (isdigit(*buf)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
497 handle_errcode(buf, TRUE); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
498 } else { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
499 debug_printf("Unhandled message!\n"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
500 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
501 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
502 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
503 static void msn_rng_connect(gpointer data, gint source, GdkInputCondition cond) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
504 { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
505 struct msn_switchboard *ms = data; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
506 struct gaim_connection *gc = ms->gc; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
507 struct msn_data *md; |
1572 | 508 char buf[MSN_BUF_LEN]; |
509 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
510 if (source == -1 || !g_slist_find(connections, gc)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
511 g_free(ms->sessid); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
512 g_free(ms->auth); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
513 g_free(ms); |
1851
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
514 return; |
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
515 } |
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
516 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
517 md = gc->proto_data; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
518 |
2015
0d11fd498068
[gaim-migrate @ 2025]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2014
diff
changeset
|
519 if (ms->fd != source) |
0d11fd498068
[gaim-migrate @ 2025]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2014
diff
changeset
|
520 ms->fd = source; |
1572 | 521 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
522 g_snprintf(buf, sizeof(buf), "ANS %d %s %s %s\n", ++ms->trId, gc->username, ms->auth, ms->sessid); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
523 if (msn_write(ms->fd, buf, strlen(buf)) < 0) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
524 close(ms->fd); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
525 g_free(ms->sessid); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
526 g_free(ms->auth); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
527 g_free(ms); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
528 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
529 } |
1572 | 530 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
531 md->switches = g_slist_append(md->switches, ms); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
532 ms->inpa = gdk_input_add(ms->fd, GDK_INPUT_READ, msn_switchboard_callback, ms); |
1572 | 533 } |
534 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
535 static void msn_ss_xfr_connect(gpointer data, gint source, GdkInputCondition cond) |
1584 | 536 { |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
537 struct msn_switchboard *ms = data; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
538 struct gaim_connection *gc = ms->gc; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
539 char buf[MSN_BUF_LEN]; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
540 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
541 if (source == -1 || !g_slist_find(connections, gc)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
542 g_free(ms->auth); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
543 g_free(ms); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
544 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
545 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
546 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
547 if (ms->fd != source) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
548 ms->fd = source; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
549 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
550 g_snprintf(buf, sizeof(buf), "USR %d %s %s\n", ++ms->trId, gc->username, ms->auth); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
551 if (msn_write(ms->fd, buf, strlen(buf)) < 0) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
552 g_free(ms->auth); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
553 g_free(ms); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
554 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
555 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
556 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
557 ms->inpa = gdk_input_add(ms->fd, GDK_INPUT_READ, msn_switchboard_callback, ms); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
558 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
559 |
1986
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
560 struct msn_add_permit { |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
561 struct gaim_connection *gc; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
562 char *user; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
563 char *friend; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
564 }; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
565 |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
566 static void msn_accept_add(gpointer w, struct msn_add_permit *map) |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
567 { |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
568 struct msn_data *md = map->gc->proto_data; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
569 char buf[MSN_BUF_LEN]; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
570 |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
571 g_snprintf(buf, sizeof(buf), "ADD %d AL %s %s\n", ++md->trId, map->user, map->friend); |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
572 if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
573 hide_login_progress(map->gc, "Write error"); |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
574 signoff(map->gc); |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
575 return; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
576 } |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
577 } |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
578 |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
579 static void msn_cancel_add(gpointer w, struct msn_add_permit *map) |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
580 { |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
581 g_free(map->user); |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
582 g_free(map->friend); |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
583 g_free(map); |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
584 } |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
585 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
586 static void msn_callback(gpointer data, gint source, GdkInputCondition cond) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
587 { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
588 struct gaim_connection *gc = data; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
589 struct msn_data *md = gc->proto_data; |
1584 | 590 char buf[MSN_BUF_LEN]; |
591 int i = 0; | |
592 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
593 bzero(buf, sizeof(buf)); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
594 while ((read(md->fd, buf + i, 1) > 0) && (buf[i++] != '\n')) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
595 if (i == sizeof(buf)) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
596 i--; /* yes i know this loses data but we shouldn't get messages this long |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
597 and it's better than possibly writing past our buffer */ |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
598 if (i == 0 || buf[i - 1] != '\n') { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
599 hide_login_progress(gc, "Error reading from server"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
600 signoff(gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
601 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
602 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
603 debug_printf("S: %s", buf); |
1584 | 604 g_strchomp(buf); |
605 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
606 if (!g_strncasecmp(buf, "ADD", 3)) { |
1986
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
607 char *list, *user, *friend, *tmp = buf; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
608 struct msn_add_permit *ap = g_new0(struct msn_add_permit, 1); |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
609 char msg[MSN_BUF_LEN]; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
610 |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
611 GET_NEXT(tmp); |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
612 GET_NEXT(tmp); |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
613 list = tmp; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
614 |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
615 GET_NEXT(tmp); |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
616 GET_NEXT(tmp); |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
617 user = tmp; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
618 |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
619 GET_NEXT(tmp); |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
620 friend = tmp; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
621 |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
622 if (g_strcasecmp(list, "RL")) |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
623 return; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
624 |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
625 ap->user = g_strdup(user); |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
626 ap->friend = g_strdup(friend); |
1986
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
627 ap->gc = gc; |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
628 |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
629 g_snprintf(msg, sizeof(msg), "The user %s (%s) wants to add you to their buddy list.", |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
630 ap->user, url_decode(ap->friend)); |
1986
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
631 |
00ef734e92e1
[gaim-migrate @ 1996]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1985
diff
changeset
|
632 do_ask_dialog(msg, ap, msn_accept_add, msn_cancel_add); |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
633 } else if (!g_strncasecmp(buf, "BLP", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
634 } else if (!g_strncasecmp(buf, "BPR", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
635 } else if (!g_strncasecmp(buf, "CHG", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
636 } else if (!g_strncasecmp(buf, "FLN", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
637 char *usr = buf; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
638 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
639 GET_NEXT(usr); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
640 serv_got_update(gc, usr, 0, 0, 0, 0, 0, 0); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
641 } else if (!g_strncasecmp(buf, "GTC", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
642 } else if (!g_strncasecmp(buf, "INF", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
643 } else if (!g_strncasecmp(buf, "ILN", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
644 char *state, *user, *tmp = buf; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
645 int status = UC_NORMAL; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
646 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
647 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
648 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
649 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
650 state = tmp; |
1584 | 651 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
652 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
653 user = tmp; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
654 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
655 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
656 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
657 if (!g_strcasecmp(state, "BSY")) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
658 status |= (MSN_BUSY << 5); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
659 } else if (!g_strcasecmp(state, "IDL")) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
660 status |= (MSN_IDLE << 5); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
661 } else if (!g_strcasecmp(state, "BRB")) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
662 status |= (MSN_BRB << 5); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
663 } else if (!g_strcasecmp(state, "AWY")) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
664 status = UC_UNAVAILABLE; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
665 } else if (!g_strcasecmp(state, "PHN")) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
666 status |= (MSN_PHONE << 5); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
667 } else if (!g_strcasecmp(state, "LUN")) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
668 status |= (MSN_LUNCH << 5); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
669 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
670 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
671 serv_got_update(gc, user, 1, 0, 0, 0, status, 0); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
672 } else if (!g_strncasecmp(buf, "LST", 3)) { |
1991
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
673 char *which, *who, *friend, *tmp = buf; |
1584 | 674 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
675 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
676 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
677 which = tmp; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
678 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
679 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
680 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
681 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
682 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
683 who = tmp; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
684 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
685 GET_NEXT(tmp); |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
686 friend = url_decode(tmp); |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
687 |
1991
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
688 if (!g_strcasecmp(which, "FL")) { |
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
689 struct msn_buddy *b = g_new0(struct msn_buddy, 1); |
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
690 b->user = g_strdup(who); |
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
691 b->friend = g_strdup(friend); |
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
692 md->fl = g_slist_append(md->fl, b); |
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
693 } else if (!md->imported) { |
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
694 if (bud_list_cache_exists(gc)) |
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
695 do_import(NULL, gc); |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
696 md->imported = TRUE; |
1991
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
697 while (md->fl) { |
1994
0c8073b877d2
[gaim-migrate @ 2004]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1993
diff
changeset
|
698 struct msn_buddy *mb = md->fl->data; |
0c8073b877d2
[gaim-migrate @ 2004]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1993
diff
changeset
|
699 struct buddy *b; |
0c8073b877d2
[gaim-migrate @ 2004]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1993
diff
changeset
|
700 md->fl = g_slist_remove(md->fl, mb); |
0c8073b877d2
[gaim-migrate @ 2004]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1993
diff
changeset
|
701 if (!(b = find_buddy(gc, mb->user))) |
0c8073b877d2
[gaim-migrate @ 2004]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1993
diff
changeset
|
702 add_buddy(gc, "Buddies", mb->user, mb->friend); |
0c8073b877d2
[gaim-migrate @ 2004]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1993
diff
changeset
|
703 else if (!g_strcasecmp(b->name, b->show)) { |
0c8073b877d2
[gaim-migrate @ 2004]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1993
diff
changeset
|
704 g_snprintf(b->show, sizeof(b->show), "%s", mb->friend); |
0c8073b877d2
[gaim-migrate @ 2004]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1993
diff
changeset
|
705 handle_buddy_rename(b, b->name); |
0c8073b877d2
[gaim-migrate @ 2004]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1993
diff
changeset
|
706 } |
0c8073b877d2
[gaim-migrate @ 2004]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1993
diff
changeset
|
707 g_free(mb->user); |
0c8073b877d2
[gaim-migrate @ 2004]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1993
diff
changeset
|
708 g_free(mb->friend); |
0c8073b877d2
[gaim-migrate @ 2004]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1993
diff
changeset
|
709 g_free(mb); |
1991
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
710 } |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
711 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
712 } else if (!g_strncasecmp(buf, "MSG", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
713 char *user, *tmp = buf; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
714 int length; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
715 char *msg, *skiphead, *utf, *final; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
716 int len; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
717 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
718 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
719 user = tmp; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
720 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
721 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
722 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
723 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
724 length = atoi(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
725 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
726 msg = g_new0(char, MAX(length + 1, MSN_BUF_LEN)); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
727 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
728 if (read(md->fd, msg, length) != length) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
729 g_free(msg); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
730 hide_login_progress(gc, "Unable to read message"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
731 signoff(gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
732 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
733 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
734 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
735 if (!g_strcasecmp(user, "hotmail")) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
736 handle_hotmail(gc, msg); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
737 g_free(msg); |
1584 | 738 return; |
739 } | |
740 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
741 skiphead = strstr(msg, "\r\n\r\n"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
742 if (!skiphead || !skiphead[4]) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
743 g_free(msg); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
744 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
745 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
746 skiphead += 4; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
747 utf = utf8_to_str(skiphead); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
748 len = MAX(strlen(utf) + 1, BUF_LEN); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
749 final = g_malloc(len); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
750 g_snprintf(final, len, "%s", utf); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
751 g_free(utf); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
752 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
753 serv_got_im(gc, user, final, 0, time(NULL)); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
754 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
755 g_free(final); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
756 g_free(msg); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
757 } else if (!g_strncasecmp(buf, "NLN", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
758 char *state, *user, *tmp = buf; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
759 int status = UC_NORMAL; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
760 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
761 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
762 state = tmp; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
763 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
764 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
765 user = tmp; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
766 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
767 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
768 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
769 if (!g_strcasecmp(state, "BSY")) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
770 status |= (MSN_BUSY << 5); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
771 } else if (!g_strcasecmp(state, "IDL")) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
772 status |= (MSN_IDLE << 5); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
773 } else if (!g_strcasecmp(state, "BRB")) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
774 status |= (MSN_BRB << 5); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
775 } else if (!g_strcasecmp(state, "AWY")) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
776 status = UC_UNAVAILABLE; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
777 } else if (!g_strcasecmp(state, "PHN")) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
778 status |= (MSN_PHONE << 5); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
779 } else if (!g_strcasecmp(state, "LUN")) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
780 status |= (MSN_LUNCH << 5); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
781 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
782 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
783 serv_got_update(gc, user, 1, 0, 0, 0, status, 0); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
784 } else if (!g_strncasecmp(buf, "OUT", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
785 } else if (!g_strncasecmp(buf, "PRP", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
786 } else if (!g_strncasecmp(buf, "REM", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
787 } else if (!g_strncasecmp(buf, "RNG", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
788 struct msn_switchboard *ms; |
2023
3ab2082d125f
[gaim-migrate @ 2033]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2021
diff
changeset
|
789 char *sessid, *ssaddr, *auth, *user; |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
790 int port, i = 0; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
791 char *tmp = buf; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
792 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
793 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
794 sessid = tmp; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
795 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
796 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
797 ssaddr = tmp; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
798 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
799 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
800 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
801 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
802 auth = tmp; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
803 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
804 GET_NEXT(tmp); |
1989
21c595ef11c8
[gaim-migrate @ 1999]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1988
diff
changeset
|
805 user = tmp; |
21c595ef11c8
[gaim-migrate @ 1999]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1988
diff
changeset
|
806 GET_NEXT(tmp); |
1584 | 807 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
808 while (ssaddr[i] && ssaddr[i] != ':') i++; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
809 if (ssaddr[i] == ':') { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
810 char *x = &ssaddr[i + 1]; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
811 ssaddr[i] = 0; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
812 port = atoi(x); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
813 } else |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
814 port = 1863; |
1584 | 815 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
816 ms = g_new0(struct msn_switchboard, 1); |
1989
21c595ef11c8
[gaim-migrate @ 1999]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1988
diff
changeset
|
817 ms->user = g_strdup(user); |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
818 ms->sessid = g_strdup(sessid); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
819 ms->auth = g_strdup(auth); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
820 ms->gc = gc; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
821 ms->fd = proxy_connect(ssaddr, port, msn_rng_connect, ms); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
822 } else if (!g_strncasecmp(buf, "SYN", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
823 } else if (!g_strncasecmp(buf, "USR", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
824 } else if (!g_strncasecmp(buf, "XFR", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
825 char *host = strstr(buf, "SB"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
826 int port; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
827 int i = 0; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
828 gboolean switchboard = TRUE; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
829 char *tmp; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
830 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
831 if (!host) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
832 host = strstr(buf, "NS"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
833 if (!host) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
834 hide_login_progress(gc, "Got invalid XFR\n"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
835 signoff(gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
836 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
837 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
838 switchboard = FALSE; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
839 } |
1584 | 840 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
841 GET_NEXT(host); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
842 while (host[i] && host[i] != ':') i++; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
843 if (host[i] == ':') { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
844 tmp = &host[i + 1]; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
845 host[i] = 0; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
846 while (isdigit(*tmp)) tmp++; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
847 *tmp++ = 0; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
848 port = atoi(&host[i + 1]); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
849 } else { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
850 port = 1863; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
851 tmp = host; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
852 GET_NEXT(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
853 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
854 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
855 if (switchboard) { |
2014
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
856 struct msn_switchboard *ms = msn_find_writable_switch(gc); |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
857 if (!ms) |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
858 return; |
1584 | 859 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
860 GET_NEXT(tmp); |
1584 | 861 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
862 ms->auth = g_strdup(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
863 ms->fd = proxy_connect(host, port, msn_ss_xfr_connect, ms); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
864 } else { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
865 close(md->fd); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
866 gdk_input_remove(md->inpa); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
867 md->inpa = 0; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
868 md->fd = 0; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
869 md->fd = proxy_connect(host, port, msn_login_xfr_connect, gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
870 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
871 } else if (isdigit(*buf)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
872 handle_errcode(buf, TRUE); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
873 } else { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
874 debug_printf("Unhandled message!\n"); |
1584 | 875 } |
876 } | |
877 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
878 static void msn_login_xfr_connect(gpointer data, gint source, GdkInputCondition cond) |
1851
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
879 { |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
880 struct gaim_connection *gc = data; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
881 struct msn_data *md; |
1851
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
882 char buf[MSN_BUF_LEN]; |
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
883 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
884 if (!g_slist_find(connections, gc)) |
1851
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
885 return; |
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
886 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
887 md = gc->proto_data; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
888 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
889 if (md->fd != source) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
890 md->fd = source; |
1851
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
891 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
892 if (md->fd == -1) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
893 hide_login_progress(gc, "Unable to connect to Notification Server"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
894 signoff(gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
895 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
896 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
897 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
898 g_snprintf(buf, sizeof(buf), "USR %d MD5 I %s\n", ++md->trId, gc->username); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
899 if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
900 hide_login_progress(gc, "Unable to talk to Notification Server"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
901 signoff(gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
902 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
903 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
904 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
905 md->inpa = gdk_input_add(md->fd, GDK_INPUT_READ, msn_login_callback, gc); |
1851
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
906 } |
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
907 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
908 static void msn_login_callback(gpointer data, gint source, GdkInputCondition cond) |
1567 | 909 { |
910 struct gaim_connection *gc = data; | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
911 struct msn_data *md = gc->proto_data; |
1567 | 912 char buf[MSN_BUF_LEN]; |
913 int i = 0; | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
914 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
915 bzero(buf, sizeof(buf)); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
916 while ((read(md->fd, buf + i, 1) > 0) && (buf[i++] != '\n')) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
917 if (i == sizeof(buf)) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
918 i--; /* yes i know this loses data but we shouldn't get messages this long |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
919 and it's better than possibly writing past our buffer */ |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
920 if (i == 0 || buf[i - 1] != '\n') { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
921 hide_login_progress(gc, "Error reading from server"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
922 signoff(gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
923 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
924 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
925 debug_printf("S: %s", buf); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
926 g_strchomp(buf); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
927 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
928 if (!g_strncasecmp(buf, "VER", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
929 /* we got VER, check to see that MSNP2 is in the list, then send INF */ |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
930 if (!strstr(buf, "MSNP2")) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
931 hide_login_progress(gc, "Protocol not supported"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
932 signoff(gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
933 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
934 } |
1259 | 935 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
936 g_snprintf(buf, sizeof(buf), "INF %d\n", ++md->trId); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
937 if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
938 hide_login_progress(gc, "Unable to request INF\n"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
939 signoff(gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
940 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
941 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
942 } else if (!g_strncasecmp(buf, "INF", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
943 /* check to make sure we can use md5 */ |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
944 if (!strstr(buf, "MD5")) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
945 hide_login_progress(gc, "Unable to login using MD5"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
946 signoff(gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
947 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
948 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
949 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
950 g_snprintf(buf, sizeof(buf), "USR %d MD5 I %s\n", ++md->trId, gc->username); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
951 if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
952 hide_login_progress(gc, "Unable to send USR\n"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
953 signoff(gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
954 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
955 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
956 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
957 set_login_progress(gc, 3, "Requesting to send password"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
958 } else if (!g_strncasecmp(buf, "USR", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
959 /* so here, we're either getting the challenge or the OK */ |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
960 if (strstr(buf, "OK")) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
961 g_snprintf(buf, sizeof(buf), "SYN %d 0\n", ++md->trId); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
962 if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
963 hide_login_progress(gc, "Unable to write"); |
1588 | 964 signoff(gc); |
1984
e90a0164436c
[gaim-migrate @ 1994]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1982
diff
changeset
|
965 return; |
1588 | 966 } |
967 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
968 g_snprintf(buf, sizeof(buf), "CHG %d NLN\n", ++md->trId); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
969 if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
970 hide_login_progress(gc, "Unable to write"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
971 signoff(gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
972 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
973 } |
1567 | 974 |
1987
a47327740514
[gaim-migrate @ 1997]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1986
diff
changeset
|
975 g_snprintf(buf, sizeof(buf), "BLP %d AL\n", ++md->trId); |
a47327740514
[gaim-migrate @ 1997]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1986
diff
changeset
|
976 if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
a47327740514
[gaim-migrate @ 1997]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1986
diff
changeset
|
977 hide_login_progress(gc, "Unable to write"); |
a47327740514
[gaim-migrate @ 1997]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1986
diff
changeset
|
978 signoff(gc); |
a47327740514
[gaim-migrate @ 1997]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1986
diff
changeset
|
979 return; |
a47327740514
[gaim-migrate @ 1997]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1986
diff
changeset
|
980 } |
a47327740514
[gaim-migrate @ 1997]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1986
diff
changeset
|
981 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
982 account_online(gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
983 serv_finish_login(gc); |
1569 | 984 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
985 gdk_input_remove(md->inpa); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
986 md->inpa = gdk_input_add(md->fd, GDK_INPUT_READ, msn_callback, gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
987 } else if (strstr(buf, "MD5")) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
988 char *challenge = buf; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
989 char buf2[MSN_BUF_LEN]; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
990 md5_state_t st; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
991 md5_byte_t di[16]; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
992 int spaces = 4; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
993 int i; |
1569 | 994 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
995 while (spaces) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
996 if (isspace(*challenge)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
997 spaces--; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
998 while (isspace(challenge[1])) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
999 challenge++; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1000 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1001 challenge++; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1002 } |
1833 | 1003 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1004 g_snprintf(buf2, sizeof(buf2), "%s%s", challenge, gc->password); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1005 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1006 md5_init(&st); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1007 md5_append(&st, (const md5_byte_t *)buf2, strlen(buf2)); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1008 md5_finish(&st, di); |
1833 | 1009 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1010 g_snprintf(buf, sizeof(buf), "USR %d MD5 S ", ++md->trId); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1011 for (i = 0; i < 16; i++) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1012 g_snprintf(buf2, sizeof(buf2), "%02x", di[i]); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1013 strcat(buf, buf2); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1014 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1015 strcat(buf, "\n"); |
1628 | 1016 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1017 if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1018 hide_login_progress(gc, "Unable to send password"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1019 signoff(gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1020 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1021 } |
1628 | 1022 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1023 set_login_progress(gc, 4, "Password sent"); |
1628 | 1024 } |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1025 } else if (!g_strncasecmp(buf, "XFR", 3)) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1026 char *host = strstr(buf, "NS"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1027 int port; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1028 int i = 0; |
1572 | 1029 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1030 if (!host) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1031 hide_login_progress(gc, "Got invalid XFR\n"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1032 signoff(gc); |
1572 | 1033 return; |
1034 } | |
1035 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1036 GET_NEXT(host); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1037 while (host[i] && host[i] != ':') i++; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1038 if (host[i] == ':') { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1039 char *x = &host[i + 1]; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1040 host[i] = 0; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1041 port = atoi(x); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1042 } else |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1043 port = 1863; |
1584 | 1044 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1045 close(md->fd); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1046 gdk_input_remove(md->inpa); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1047 md->inpa = 0; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1048 md->fd = 0; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1049 md->fd = proxy_connect(host, port, msn_login_xfr_connect, gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1050 } else { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1051 if (isdigit(*buf)) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1052 hide_login_progress(gc, handle_errcode(buf, FALSE)); |
1628 | 1053 else |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1054 hide_login_progress(gc, "Unable to parse message"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1055 signoff(gc); |
1628 | 1056 return; |
1057 } | |
1259 | 1058 } |
1059 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1060 static void msn_login_connect(gpointer data, gint source, GdkInputCondition cond) |
1282 | 1061 { |
1567 | 1062 struct gaim_connection *gc = data; |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1063 struct msn_data *md; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1064 char buf[1024]; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1065 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1066 if (!g_slist_find(connections, gc)) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1067 return; |
1282 | 1068 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1069 md = gc->proto_data; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1070 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1071 if (md->fd != source) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1072 md->fd = source; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1073 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1074 if (md->fd == -1) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1075 hide_login_progress(gc, "Unable to connect"); |
1851
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
1076 signoff(gc); |
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
1077 return; |
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
1078 } |
1567 | 1079 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1080 g_snprintf(buf, sizeof(buf), "VER %d MSNP2\n", ++md->trId); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1081 if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1082 hide_login_progress(gc, "Unable to write to server"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1083 signoff(gc); |
1567 | 1084 return; |
1085 } | |
1086 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1087 md->inpa = gdk_input_add(md->fd, GDK_INPUT_READ, msn_login_callback, gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1088 set_login_progress(gc, 2, "Synching with server"); |
1259 | 1089 } |
1090 | |
1891
1c977d995da9
[gaim-migrate @ 1901]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1881
diff
changeset
|
1091 static void msn_login(struct aim_user *user) |
1282 | 1092 { |
1567 | 1093 struct gaim_connection *gc = new_gaim_conn(user); |
1094 struct msn_data *md = gc->proto_data = g_new0(struct msn_data, 1); | |
1282 | 1095 |
1096 set_login_progress(gc, 1, "Connecting"); | |
1259 | 1097 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1098 g_snprintf(gc->username, sizeof(gc->username), "%s", msn_normalize(gc->username)); |
1567 | 1099 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1100 md->fd = proxy_connect("messenger.hotmail.com", 1863, msn_login_connect, gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1101 } |
1282 | 1102 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1103 static void msn_close(struct gaim_connection *gc) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1104 { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1105 struct msn_data *md = gc->proto_data; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1106 close(md->fd); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1107 if (md->inpa) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1108 gdk_input_remove(md->inpa); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1109 while (md->switches) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1110 msn_kill_switch(md->switches->data); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1111 while (md->fl) { |
1991
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
1112 struct msn_buddy *tmp = md->fl->data; |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1113 md->fl = g_slist_remove(md->fl, tmp); |
1991
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
1114 g_free(tmp->user); |
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
1115 g_free(tmp->friend); |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1116 g_free(tmp); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1117 } |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1118 g_free(md); |
1284 | 1119 } |
1120 | |
1891
1c977d995da9
[gaim-migrate @ 1901]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1881
diff
changeset
|
1121 static void msn_send_im(struct gaim_connection *gc, char *who, char *message, int away) |
1584 | 1122 { |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1123 struct msn_data *md = gc->proto_data; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1124 struct msn_switchboard *ms = msn_find_switch(gc, who); |
1584 | 1125 char buf[MSN_BUF_LEN]; |
1126 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1127 if (ms) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1128 g_snprintf(buf, sizeof(buf), "MSG %d N %d\r\n%s%s", ++ms->trId, |
1988
2bb74a5a574f
[gaim-migrate @ 1998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1987
diff
changeset
|
1129 strlen(MIME_HEADER) + strlen(message), |
2bb74a5a574f
[gaim-migrate @ 1998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1987
diff
changeset
|
1130 MIME_HEADER, message); |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1131 if (msn_write(ms->fd, buf, strlen(buf)) < 0) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1132 msn_kill_switch(ms); |
2014
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
1133 debug_printf("\n"); |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1134 } else { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1135 g_snprintf(buf, MSN_BUF_LEN, "XFR %d SB\n", ++md->trId); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1136 if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1137 hide_login_progress(gc, "Write error"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1138 signoff(gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1139 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1140 } |
1584 | 1141 |
2014
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
1142 ms = g_new0(struct msn_switchboard, 1); |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
1143 md->switches = g_slist_append(md->switches, ms); |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
1144 ms->user = g_strdup(who); |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
1145 ms->txqueue = g_strdup(message); |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
1146 ms->gc = gc; |
162f749ee5e7
[gaim-migrate @ 2024]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1994
diff
changeset
|
1147 ms->fd = -1; |
1585 | 1148 } |
1598 | 1149 } |
1150 | |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1151 static void msn_chat_send(struct gaim_connection *gc, int id, char *message) |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1152 { |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1153 struct msn_switchboard *ms = msn_find_switch_by_id(gc, id); |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1154 char buf[MSN_BUF_LEN]; |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1155 |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1156 if (!ms) |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1157 return; |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1158 |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1159 g_snprintf(buf, sizeof(buf), "MSG %d N %d\r\n%s%s", ++ms->trId, |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1160 strlen(MIME_HEADER) + strlen(message), |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1161 MIME_HEADER, message); |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1162 if (msn_write(ms->fd, buf, strlen(buf)) < 0) |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1163 msn_kill_switch(ms); |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1164 debug_printf("\n"); |
2023
3ab2082d125f
[gaim-migrate @ 2033]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2021
diff
changeset
|
1165 serv_got_chat_in(gc, id, gc->username, 0, message, time(NULL)); |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1166 } |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1167 |
2024
b86f639ff99f
[gaim-migrate @ 2034]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2023
diff
changeset
|
1168 static void msn_chat_invite(struct gaim_connection *gc, int id, char *msg, char *who) |
b86f639ff99f
[gaim-migrate @ 2034]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2023
diff
changeset
|
1169 { |
b86f639ff99f
[gaim-migrate @ 2034]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2023
diff
changeset
|
1170 struct msn_switchboard *ms = msn_find_switch_by_id(gc, id); |
b86f639ff99f
[gaim-migrate @ 2034]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2023
diff
changeset
|
1171 char buf[MSN_BUF_LEN]; |
b86f639ff99f
[gaim-migrate @ 2034]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2023
diff
changeset
|
1172 |
b86f639ff99f
[gaim-migrate @ 2034]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2023
diff
changeset
|
1173 if (!ms) |
b86f639ff99f
[gaim-migrate @ 2034]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2023
diff
changeset
|
1174 return; |
b86f639ff99f
[gaim-migrate @ 2034]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2023
diff
changeset
|
1175 |
b86f639ff99f
[gaim-migrate @ 2034]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2023
diff
changeset
|
1176 g_snprintf(buf, sizeof(buf), "CAL %d %s\n", ++ms->trId, who); |
b86f639ff99f
[gaim-migrate @ 2034]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2023
diff
changeset
|
1177 if (msn_write(ms->fd, buf, strlen(buf)) < 0) |
b86f639ff99f
[gaim-migrate @ 2034]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2023
diff
changeset
|
1178 msn_kill_switch(ms); |
b86f639ff99f
[gaim-migrate @ 2034]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2023
diff
changeset
|
1179 } |
b86f639ff99f
[gaim-migrate @ 2034]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2023
diff
changeset
|
1180 |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1181 static void msn_chat_leave(struct gaim_connection *gc, int id) |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1182 { |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1183 struct msn_switchboard *ms = msn_find_switch_by_id(gc, id); |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1184 char buf[MSN_BUF_LEN]; |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1185 |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1186 if (!ms) |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1187 return; |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1188 |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1189 g_snprintf(buf, sizeof(buf), "OUT\n"); |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1190 if (msn_write(ms->fd, buf, strlen(buf)) < 0) |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1191 msn_kill_switch(ms); |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1192 } |
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1193 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1194 static GList *msn_away_states() |
1630 | 1195 { |
1196 GList *m = NULL; | |
1197 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1198 m = g_list_append(m, "Available"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1199 m = g_list_append(m, "Away From Computer"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1200 m = g_list_append(m, "Be Right Back"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1201 m = g_list_append(m, "Busy"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1202 m = g_list_append(m, "On The Phone"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1203 m = g_list_append(m, "Out To Lunch"); |
1630 | 1204 |
1205 return m; | |
1206 } | |
1207 | |
1600 | 1208 static void msn_set_away(struct gaim_connection *gc, char *state, char *msg) |
1209 { | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1210 struct msn_data *md = gc->proto_data; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1211 char buf[MSN_BUF_LEN]; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1212 char *away; |
1630 | 1213 |
1214 gc->away = NULL; | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1215 |
1851
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
1216 if (msg) { |
1630 | 1217 gc->away = ""; |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1218 away = "AWY"; |
1851
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
1219 } else if (state) { |
1630 | 1220 gc->away = ""; |
1221 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1222 if (!strcmp(state, "Away From Computer")) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1223 away = "AWY"; |
1630 | 1224 else if (!strcmp(state, "Be Right Back")) |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1225 away = "BRB"; |
1630 | 1226 else if (!strcmp(state, "Busy")) |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1227 away = "BSY"; |
1630 | 1228 else if (!strcmp(state, "On The Phone")) |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1229 away = "PHN"; |
1630 | 1230 else if (!strcmp(state, "Out To Lunch")) |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1231 away = "LUN"; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1232 else { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1233 gc->away = NULL; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1234 away = "NLN"; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1235 } |
1851
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
1236 } else if (gc->is_idle) |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1237 away = "IDL"; |
1600 | 1238 else |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1239 away = "NLN"; |
1600 | 1240 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1241 g_snprintf(buf, sizeof(buf), "CHG %d %s\n", ++md->trId, away); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1242 if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1243 hide_login_progress(gc, "Write error"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1244 signoff(gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1245 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1246 } |
1600 | 1247 } |
1248 | |
1249 static void msn_set_idle(struct gaim_connection *gc, int idle) | |
1250 { | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1251 struct msn_data *md = gc->proto_data; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1252 char buf[MSN_BUF_LEN]; |
1600 | 1253 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1254 if (gc->away) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1255 return; |
1600 | 1256 if (idle) |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1257 g_snprintf(buf, sizeof(buf), "CHG %d IDL\n", ++md->trId); |
1600 | 1258 else |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1259 g_snprintf(buf, sizeof(buf), "CHG %d NLN\n", ++md->trId); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1260 if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1261 hide_login_progress(gc, "Write error"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1262 signoff(gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1263 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1264 } |
1600 | 1265 } |
1266 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1267 static char **msn_list_icon(int uc) |
1600 | 1268 { |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1269 if (uc == UC_NORMAL) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1270 return msn_online_xpm; |
1600 | 1271 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1272 return msn_away_xpm; |
1600 | 1273 } |
1274 | |
1639 | 1275 static char *msn_get_away_text(int s) |
1276 { | |
1851
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
1277 switch (s) { |
1639 | 1278 case MSN_BUSY : |
1279 return "Busy"; | |
1280 case MSN_BRB : | |
1281 return "Be right back"; | |
1282 case MSN_AWAY : | |
1283 return "Away from the computer"; | |
1284 case MSN_PHONE : | |
1285 return "On the phone"; | |
1286 case MSN_LUNCH : | |
1287 return "Out to lunch"; | |
1640 | 1288 case MSN_IDLE : |
1289 return "Idle"; | |
1639 | 1290 default: |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1291 return "Available"; |
1639 | 1292 } |
1293 } | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1294 |
1639 | 1295 static void msn_buddy_menu(GtkWidget *menu, struct gaim_connection *gc, char *who) |
1296 { | |
1297 struct buddy *b = find_buddy(gc, who); | |
1298 char buf[MSN_BUF_LEN]; | |
1299 GtkWidget *button; | |
1300 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1301 if (!b || !(b->uc >> 5)) |
1639 | 1302 return; |
1303 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1304 g_snprintf(buf, sizeof(buf), "Status: %s", msn_get_away_text(b->uc >> 5)); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1305 |
1639 | 1306 button = gtk_menu_item_new_with_label(buf); |
1307 gtk_menu_append(GTK_MENU(menu), button); | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1308 gtk_widget_show(button); |
1639 | 1309 } |
1310 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1311 struct mod_usr_opt { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1312 struct aim_user *user; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1313 int opt; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1314 }; |
1717 | 1315 |
1316 static void mod_opt(GtkWidget *b, struct mod_usr_opt *m) | |
1317 { | |
1318 if (m->user) { | |
1319 if (m->user->proto_opt[m->opt][0] == '1') | |
1320 m->user->proto_opt[m->opt][0] = '\0'; | |
1321 else | |
1322 strcpy(m->user->proto_opt[m->opt],"1"); | |
1323 } | |
1324 } | |
1325 | |
1326 static void free_muo(GtkWidget *b, struct mod_usr_opt *m) | |
1327 { | |
1328 g_free(m); | |
1329 } | |
1330 | |
1331 static GtkWidget *msn_protoopt_button(const char *text, struct aim_user *u, int option, GtkWidget *box) | |
1332 { | |
1333 GtkWidget *button; | |
1334 struct mod_usr_opt *muo = g_new0(struct mod_usr_opt, 1); | |
1335 button = gtk_check_button_new_with_label(text); | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1336 if (u) |
1717 | 1337 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), (u->proto_opt[option][0] == '1')); |
1338 gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 0); | |
1339 muo->user = u; | |
1340 muo->opt = option; | |
1341 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(mod_opt), muo); | |
1342 gtk_signal_connect(GTK_OBJECT(button), "destroy", GTK_SIGNAL_FUNC(free_muo), muo); | |
1343 gtk_widget_show(button); | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1344 |
1717 | 1345 return button; |
1346 } | |
1347 | |
1851
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
1348 static void msn_user_opts(GtkWidget* book, struct aim_user *user) |
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
1349 { |
1717 | 1350 GtkWidget *vbox; |
1351 | |
1352 vbox = gtk_vbox_new(FALSE, 5); | |
1353 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); | |
1851
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
1354 gtk_notebook_append_page(GTK_NOTEBOOK(book), vbox, gtk_label_new("MSN Options")); |
1717 | 1355 gtk_widget_show(vbox); |
1851
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
1356 |
97a097e00139
[gaim-migrate @ 1861]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1833
diff
changeset
|
1357 msn_protoopt_button("Notify me of new HotMail",user,USEROPT_HOTMAIL,vbox); |
1717 | 1358 } |
1359 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1360 static void msn_add_buddy(struct gaim_connection *gc, char *who) |
1717 | 1361 { |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1362 struct msn_data *md = gc->proto_data; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1363 char buf[MSN_BUF_LEN]; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1364 GSList *l = md->fl; |
1717 | 1365 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1366 while (l) { |
1991
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
1367 struct msn_buddy *b = l->data; |
308bd76c57db
[gaim-migrate @ 2001]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1990
diff
changeset
|
1368 if (!g_strcasecmp(who, b->user)) |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1369 break; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1370 l = l->next; |
1717 | 1371 } |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1372 if (l) |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1373 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1374 |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1375 g_snprintf(buf, sizeof(buf), "ADD %d FL %s %s\n", ++md->trId, who, who); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1376 if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1377 hide_login_progress(gc, "Write error"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1378 signoff(gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1379 return; |
1717 | 1380 } |
1381 } | |
1382 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1383 static void msn_rem_buddy(struct gaim_connection *gc, char *who) |
1833 | 1384 { |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1385 struct msn_data *md = gc->proto_data; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1386 char buf[MSN_BUF_LEN]; |
1833 | 1387 |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1388 g_snprintf(buf, sizeof(buf), "REM %d FL %s\n", ++md->trId, who); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1389 if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1390 hide_login_progress(gc, "Write error"); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1391 signoff(gc); |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1392 return; |
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1393 } |
1572 | 1394 } |
1395 | |
1259 | 1396 static struct prpl *my_protocol = NULL; |
1397 | |
1891
1c977d995da9
[gaim-migrate @ 1901]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1881
diff
changeset
|
1398 static void msn_init(struct prpl *ret) |
1282 | 1399 { |
1259 | 1400 ret->protocol = PROTO_MSN; |
1401 ret->name = msn_name; | |
1572 | 1402 ret->list_icon = msn_list_icon; |
1639 | 1403 ret->buddy_menu = msn_buddy_menu; |
1717 | 1404 ret->user_opts = msn_user_opts; |
1259 | 1405 ret->login = msn_login; |
1600 | 1406 ret->close = msn_close; |
1584 | 1407 ret->send_im = msn_send_im; |
1630 | 1408 ret->away_states = msn_away_states; |
1600 | 1409 ret->set_away = msn_set_away; |
1410 ret->set_idle = msn_set_idle; | |
1598 | 1411 ret->add_buddy = msn_add_buddy; |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1412 ret->remove_buddy = msn_rem_buddy; |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1413 ret->chat_send = msn_chat_send; |
2024
b86f639ff99f
[gaim-migrate @ 2034]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2023
diff
changeset
|
1414 ret->chat_invite = msn_chat_invite; |
2021
d94c82b32b06
[gaim-migrate @ 2031]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2015
diff
changeset
|
1415 ret->chat_leave = msn_chat_leave; |
1756 | 1416 ret->normalize = msn_normalize; |
1259 | 1417 |
1418 my_protocol = ret; | |
1419 } | |
1420 | |
1985
008a4cc4a82c
[gaim-migrate @ 1995]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1984
diff
changeset
|
1421 char *gaim_plugin_init(GModule *handle) |
1282 | 1422 { |
1443
336fc98b7f90
[gaim-migrate @ 1453]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1327
diff
changeset
|
1423 load_protocol(msn_init, sizeof(struct prpl)); |
1259 | 1424 return NULL; |
1425 } | |
1426 | |
1282 | 1427 void gaim_plugin_remove() |
1428 { | |
1259 | 1429 struct prpl *p = find_prpl(PROTO_MSN); |
1430 if (p == my_protocol) | |
1431 unload_protocol(p); | |
1432 } |