Mercurial > pidgin
comparison libpurple/protocols/jabber/auth.c @ 20152:0cb113dfb096
Disable the account when the user cancels entering the password so the account isn't stuck in a weird unconnected state. Fixes #1791
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Tue, 18 Sep 2007 03:11:19 +0000 |
parents | da29f5c7dc1a |
children | 591267f6f1d5 f3cfcbbac3d8 |
comparison
equal
deleted
inserted
replaced
20151:48374dc14adc | 20152:0cb113dfb096 |
---|---|
21 #include "internal.h" | 21 #include "internal.h" |
22 | 22 |
23 #include "account.h" | 23 #include "account.h" |
24 #include "debug.h" | 24 #include "debug.h" |
25 #include "cipher.h" | 25 #include "cipher.h" |
26 #include "core.h" | |
26 #include "conversation.h" | 27 #include "conversation.h" |
27 #include "request.h" | 28 #include "request.h" |
28 #include "sslconn.h" | 29 #include "sslconn.h" |
29 #include "util.h" | 30 #include "util.h" |
30 #include "xmlnode.h" | 31 #include "xmlnode.h" |
64 GString *response; | 65 GString *response; |
65 gchar *enc_out; | 66 gchar *enc_out; |
66 | 67 |
67 auth = xmlnode_new("auth"); | 68 auth = xmlnode_new("auth"); |
68 xmlnode_set_namespace(auth, "urn:ietf:params:xml:ns:xmpp-sasl"); | 69 xmlnode_set_namespace(auth, "urn:ietf:params:xml:ns:xmpp-sasl"); |
69 | 70 |
70 xmlnode_set_attrib(auth, "xmlns:ga", "http://www.google.com/talk/protocol/auth"); | 71 xmlnode_set_attrib(auth, "xmlns:ga", "http://www.google.com/talk/protocol/auth"); |
71 xmlnode_set_attrib(auth, "ga:client-uses-full-bind-result", "true"); | 72 xmlnode_set_attrib(auth, "ga:client-uses-full-bind-result", "true"); |
72 | 73 |
73 response = g_string_new(""); | 74 response = g_string_new(""); |
74 response = g_string_append_len(response, "\0", 1); | 75 response = g_string_append_len(response, "\0", 1); |
75 response = g_string_append(response, js->user->node); | 76 response = g_string_append(response, js->user->node); |
76 response = g_string_append_len(response, "\0", 1); | 77 response = g_string_append_len(response, "\0", 1); |
77 response = g_string_append(response, | 78 response = g_string_append(response, |
200 | 201 |
201 purple_account_set_password(js->gc->account, entry); | 202 purple_account_set_password(js->gc->account, entry); |
202 | 203 |
203 return TRUE; | 204 return TRUE; |
204 } | 205 } |
205 | 206 |
206 static void auth_pass_cb(PurpleConnection *conn, PurpleRequestFields *fields) | 207 static void auth_pass_cb(PurpleConnection *conn, PurpleRequestFields *fields) |
207 { | 208 { |
208 JabberStream *js; | 209 JabberStream *js; |
209 | 210 |
210 /* The password prompt dialog doesn't get disposed if the account disconnects */ | 211 /* The password prompt dialog doesn't get disposed if the account disconnects */ |
234 | 235 |
235 js = conn->proto_data; | 236 js = conn->proto_data; |
236 | 237 |
237 if (!auth_pass_generic(js, fields)) | 238 if (!auth_pass_generic(js, fields)) |
238 return; | 239 return; |
239 | 240 |
240 /* Restart our connection */ | 241 /* Restart our connection */ |
241 jabber_auth_start_old(js); | 242 jabber_auth_start_old(js); |
242 } | 243 } |
243 | 244 |
244 | 245 |
251 if (!PURPLE_CONNECTION_IS_VALID(conn)) | 252 if (!PURPLE_CONNECTION_IS_VALID(conn)) |
252 return; | 253 return; |
253 | 254 |
254 js = conn->proto_data; | 255 js = conn->proto_data; |
255 | 256 |
256 purple_connection_error(conn, _("Password is required to sign on.")); | 257 /* Disable the account as the user has canceled connecting */ |
258 purple_account_set_enabled(conn->account, purple_core_get_ui(), FALSE); | |
257 } | 259 } |
258 | 260 |
259 static void jabber_auth_start_cyrus(JabberStream *js) | 261 static void jabber_auth_start_cyrus(JabberStream *js) |
260 { | 262 { |
261 const char *clientout = NULL, *mech = NULL; | 263 const char *clientout = NULL, *mech = NULL; |
619 #ifdef HAVE_CYRUS_SASL | 621 #ifdef HAVE_CYRUS_SASL |
620 /* If we have Cyrus SASL, then passwords will have been set | 622 /* If we have Cyrus SASL, then passwords will have been set |
621 * to OPTIONAL for this protocol. So, we need to do our own | 623 * to OPTIONAL for this protocol. So, we need to do our own |
622 * password prompting here | 624 * password prompting here |
623 */ | 625 */ |
624 | 626 |
625 if (!purple_account_get_password(js->gc->account)) { | 627 if (!purple_account_get_password(js->gc->account)) { |
626 purple_account_request_password(js->gc->account, G_CALLBACK(auth_old_pass_cb), G_CALLBACK(auth_no_pass_cb), js->gc); | 628 purple_account_request_password(js->gc->account, G_CALLBACK(auth_old_pass_cb), G_CALLBACK(auth_no_pass_cb), js->gc); |
627 return; | 629 return; |
628 } | 630 } |
629 #endif | 631 #endif |