# HG changeset patch # User Daniel Atallah # Date 1126724493 0 # Node ID 85abf1deac054e6147e9c675d561bd919149de7a # Parent 6723c4930e50945cbed96cc35e2531ead5e76aca [gaim-migrate @ 13800] The registration process is now actually useful, it saves the UIN that was assigned to you as your new username (and the password you selected, if the account has "Remember Password" checked. Don't leak proto_data when logging out. Don't leak authentication token when cancelling registration. committer: Tailor Script diff -r 6723c4930e50 -r 85abf1deac05 src/protocols/gg/gg.c --- a/src/protocols/gg/gg.c Wed Sep 14 12:45:23 2005 +0000 +++ b/src/protocols/gg/gg.c Wed Sep 14 19:01:33 2005 +0000 @@ -236,6 +236,7 @@ struct gg_pubdir *s; uin_t uin; gchar *email, *p1, *p2, *t; + GGPToken *token = info->register_token; email = charset_convert(gaim_request_fields_get_string(fields, "email"), "UTF-8", "CP1250"); @@ -250,40 +251,62 @@ if (email == NULL || p1 == NULL || p2 == NULL || t == NULL || *email == '\0' || *p1 == '\0' || *p2 == '\0' || *t == '\0') { - gaim_notify_error(account, NULL, _("Fill in the fields."), NULL); + gaim_connection_error(gc, _("Fill in the registration fields.")); goto exit_err; } if (g_utf8_collate(p1, p2) != 0) { - gaim_notify_error(account, NULL, _("Passwords do not match."), NULL); + gaim_connection_error(gc, _("Passwords do not match.")); goto exit_err; } - h = gg_register3(email, p1, info->register_token->token_id, t, 0); + h = gg_register3(email, p1, token->token_id, t, 0); if (h == NULL || !(s = h->data) || !s->success) { - gaim_notify_error(account, NULL, - _("Unable to register new account. Error occured.\n"), - NULL); + gaim_connection_error(gc, + _("Unable to register new account. Error occurred.\n")); goto exit_err; } uin = s->uin; gaim_debug_info("gg", "registered uin: %d\n", uin); + g_free(t); + t = g_strdup_printf("%u", uin); + gaim_account_set_username(account, t); + /* Save the password if remembering passwords for the account */ + gaim_account_set_password(account, p1); + gaim_notify_info(NULL, _("New Gadu-Gadu Account Registered"), _("Registration completed successfully!"), NULL); + /* TODO: the currently open Accounts Window will not be updated withthe new username and etc, we need to somehow have it refresh at this point */ + + /* Need to disconnect or actually log in. For now, we disconnect. */ + gaim_connection_destroy(gc); + exit_err: gg_register_free(h); g_free(email); g_free(p1); g_free(p2); g_free(t); - g_free(info->register_token->token_id); - g_free(info->register_token); + g_free(token->token_id); + g_free(token); } /* }}} */ +static void ggp_callback_register_account_cancel(GaimConnection *gc, GaimRequestFields *fields) +{ + GGPInfo *info = gc->proto_data; + GGPToken *token = info->register_token; + + gaim_connection_destroy(gc); + + g_free(token->token_id); + g_free(token); + +} + /* ----- PUBLIC DIRECTORY SEARCH ---------------------------------------- */ /* @@ -1188,6 +1211,8 @@ gg_logoff(info->session); gg_free_session(info->session); } + g_free(info); + gc->proto_data = NULL; } if (gc->inpa > 0) @@ -1473,13 +1498,13 @@ gg_token_free(req); - gaim_request_fields(account, _("Register New Gadu-Gadu Account"), _("Register New Gadu-Gadu Account"), _("Please, fill in the following fields"), fields, _("OK"), G_CALLBACK(ggp_callback_register_account_ok), - _("Cancel"), NULL, gc); + _("Cancel"), G_CALLBACK(ggp_callback_register_account_cancel), + gc); } /* }}} */