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