mirror of
https://github.com/profanity-im/profanity.git
synced 2024-11-03 19:37:16 -05:00
Merge pull request #1847 from profanity-im/minor-improvements
Minor improvements
This commit is contained in:
commit
209a8f4bf5
@ -6575,7 +6575,8 @@ cmd_reconnect(ProfWin* window, const char* const command, gchar** args)
|
|||||||
int intval = 0;
|
int intval = 0;
|
||||||
char* err_msg = NULL;
|
char* err_msg = NULL;
|
||||||
if (g_strcmp0(value, "now") == 0) {
|
if (g_strcmp0(value, "now") == 0) {
|
||||||
session_reconnect_now();
|
cons_show("Reconnecting now.");
|
||||||
|
cl_ev_reconnect();
|
||||||
} else if (strtoi_range(value, &intval, 0, INT_MAX, &err_msg)) {
|
} else if (strtoi_range(value, &intval, 0, INT_MAX, &err_msg)) {
|
||||||
prefs_set_reconnect(intval);
|
prefs_set_reconnect(intval);
|
||||||
if (intval == 0) {
|
if (intval == 0) {
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
#include "plugins/plugins.h"
|
#include "plugins/plugins.h"
|
||||||
#include "ui/window_list.h"
|
#include "ui/window_list.h"
|
||||||
#include "xmpp/chat_session.h"
|
#include "xmpp/chat_session.h"
|
||||||
|
#include "xmpp/session.h"
|
||||||
#include "xmpp/xmpp.h"
|
#include "xmpp/xmpp.h"
|
||||||
|
|
||||||
#ifdef HAVE_LIBOTR
|
#ifdef HAVE_LIBOTR
|
||||||
@ -85,9 +86,8 @@ cl_ev_connect_account(ProfAccount* account)
|
|||||||
void
|
void
|
||||||
cl_ev_disconnect(void)
|
cl_ev_disconnect(void)
|
||||||
{
|
{
|
||||||
char* mybarejid = connection_get_barejid();
|
auto_char char* mybarejid = connection_get_barejid();
|
||||||
cons_show("%s logged out successfully.", mybarejid);
|
cons_show("%s logged out successfully.", mybarejid);
|
||||||
free(mybarejid);
|
|
||||||
|
|
||||||
ui_close_all_wins();
|
ui_close_all_wins();
|
||||||
ev_disconnect_cleanup();
|
ev_disconnect_cleanup();
|
||||||
@ -95,6 +95,18 @@ cl_ev_disconnect(void)
|
|||||||
ev_reset_connection_counter();
|
ev_reset_connection_counter();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cl_ev_reconnect(void)
|
||||||
|
{
|
||||||
|
if (connection_get_status() != JABBER_DISCONNECTED) {
|
||||||
|
connection_disconnect();
|
||||||
|
ev_disconnect_cleanup();
|
||||||
|
// on intentional disconnect reset the counter
|
||||||
|
ev_reset_connection_counter();
|
||||||
|
}
|
||||||
|
session_reconnect_now();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cl_ev_presence_send(const resource_presence_t presence_type, const int idle_secs)
|
cl_ev_presence_send(const resource_presence_t presence_type, const int idle_secs)
|
||||||
{
|
{
|
||||||
|
@ -42,6 +42,7 @@ jabber_conn_status_t cl_ev_connect_jid(const char* const jid, const char* const
|
|||||||
jabber_conn_status_t cl_ev_connect_account(ProfAccount* account);
|
jabber_conn_status_t cl_ev_connect_account(ProfAccount* account);
|
||||||
|
|
||||||
void cl_ev_disconnect(void);
|
void cl_ev_disconnect(void);
|
||||||
|
void cl_ev_reconnect(void);
|
||||||
|
|
||||||
void cl_ev_presence_send(const resource_presence_t presence_type, const int idle_secs);
|
void cl_ev_presence_send(const resource_presence_t presence_type, const int idle_secs);
|
||||||
|
|
||||||
|
@ -1332,8 +1332,8 @@ sv_ev_bookmark_autojoin(Bookmark* bookmark)
|
|||||||
|
|
||||||
log_debug("Autojoin %s with nick=%s", bookmark->barejid, nick);
|
log_debug("Autojoin %s with nick=%s", bookmark->barejid, nick);
|
||||||
if (!muc_active(bookmark->barejid)) {
|
if (!muc_active(bookmark->barejid)) {
|
||||||
presence_join_room(bookmark->barejid, nick, bookmark->password);
|
|
||||||
muc_join(bookmark->barejid, nick, bookmark->password, TRUE);
|
muc_join(bookmark->barejid, nick, bookmark->password, TRUE);
|
||||||
|
presence_join_room(bookmark->barejid, nick, bookmark->password);
|
||||||
iq_room_affiliation_list(bookmark->barejid, "member", false);
|
iq_room_affiliation_list(bookmark->barejid, "member", false);
|
||||||
iq_room_affiliation_list(bookmark->barejid, "admin", false);
|
iq_room_affiliation_list(bookmark->barejid, "admin", false);
|
||||||
iq_room_affiliation_list(bookmark->barejid, "owner", false);
|
iq_room_affiliation_list(bookmark->barejid, "owner", false);
|
||||||
|
@ -964,6 +964,7 @@ _connection_handler(xmpp_conn_t* const xmpp_conn, const xmpp_conn_event_t status
|
|||||||
conn.domain = strdup(my_jid->domainpart);
|
conn.domain = strdup(my_jid->domainpart);
|
||||||
jid_destroy(my_jid);
|
jid_destroy(my_jid);
|
||||||
|
|
||||||
|
connection_clear_data();
|
||||||
conn.features_by_jid = g_hash_table_new_full(g_str_hash, g_str_equal, free, (GDestroyNotify)g_hash_table_destroy);
|
conn.features_by_jid = g_hash_table_new_full(g_str_hash, g_str_equal, free, (GDestroyNotify)g_hash_table_destroy);
|
||||||
g_hash_table_insert(conn.features_by_jid, strdup(conn.domain), g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL));
|
g_hash_table_insert(conn.features_by_jid, strdup(conn.domain), g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL));
|
||||||
|
|
||||||
@ -990,6 +991,7 @@ _connection_handler(xmpp_conn_t* const xmpp_conn, const xmpp_conn_event_t status
|
|||||||
conn.domain = strdup(my_raw_jid->domainpart);
|
conn.domain = strdup(my_raw_jid->domainpart);
|
||||||
jid_destroy(my_raw_jid);
|
jid_destroy(my_raw_jid);
|
||||||
|
|
||||||
|
connection_clear_data();
|
||||||
conn.features_by_jid = g_hash_table_new_full(g_str_hash, g_str_equal, free, (GDestroyNotify)g_hash_table_destroy);
|
conn.features_by_jid = g_hash_table_new_full(g_str_hash, g_str_equal, free, (GDestroyNotify)g_hash_table_destroy);
|
||||||
g_hash_table_insert(conn.features_by_jid, strdup(conn.domain), g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL));
|
g_hash_table_insert(conn.features_by_jid, strdup(conn.domain), g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL));
|
||||||
|
|
||||||
|
@ -48,7 +48,6 @@ jabber_conn_status_t connection_connect(const char* const fulljid, const char* c
|
|||||||
const char* const tls_policy, const char* const auth_policy);
|
const char* const tls_policy, const char* const auth_policy);
|
||||||
jabber_conn_status_t connection_register(const char* const altdomain, int port, const char* const tls_policy,
|
jabber_conn_status_t connection_register(const char* const altdomain, int port, const char* const tls_policy,
|
||||||
const char* const username, const char* const password);
|
const char* const username, const char* const password);
|
||||||
void connection_disconnect(void);
|
|
||||||
void connection_set_disconnected(void);
|
void connection_set_disconnected(void);
|
||||||
|
|
||||||
void connection_set_priority(const int priority);
|
void connection_set_priority(const int priority);
|
||||||
|
@ -265,6 +265,7 @@ iq_handlers_init(void)
|
|||||||
xmpp_timed_handler_add(conn, _autoping_timed_send, millis, ctx);
|
xmpp_timed_handler_add(conn, _autoping_timed_send, millis, ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
iq_rooms_cache_clear();
|
||||||
iq_handlers_clear();
|
iq_handlers_clear();
|
||||||
|
|
||||||
id_handlers = g_hash_table_new_full(g_str_hash, g_str_equal, free, (GDestroyNotify)_iq_id_handler_free);
|
id_handlers = g_hash_table_new_full(g_str_hash, g_str_equal, free, (GDestroyNotify)_iq_id_handler_free);
|
||||||
@ -2651,6 +2652,18 @@ iq_mam_request_older(ProfChatWin* win)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_mam_userdata_free(MamRsmUserdata* data)
|
||||||
|
{
|
||||||
|
free(data->end_datestr);
|
||||||
|
data->end_datestr = NULL;
|
||||||
|
free(data->start_datestr);
|
||||||
|
data->start_datestr = NULL;
|
||||||
|
free(data->barejid);
|
||||||
|
data->barejid = NULL;
|
||||||
|
free(data);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_iq_mam_request(ProfChatWin* win, GDateTime* startdate, GDateTime* enddate)
|
_iq_mam_request(ProfChatWin* win, GDateTime* startdate, GDateTime* enddate)
|
||||||
{
|
{
|
||||||
@ -2694,7 +2707,7 @@ _iq_mam_request(ProfChatWin* win, GDateTime* startdate, GDateTime* enddate)
|
|||||||
data->fetch_next = fetch_next;
|
data->fetch_next = fetch_next;
|
||||||
data->win = win;
|
data->win = win;
|
||||||
|
|
||||||
iq_id_handler_add(xmpp_stanza_get_id(iq), _mam_rsm_id_handler, NULL, data);
|
iq_id_handler_add(xmpp_stanza_get_id(iq), _mam_rsm_id_handler, (ProfIqFreeCallback)_mam_userdata_free, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
iq_send_stanza(iq);
|
iq_send_stanza(iq);
|
||||||
@ -2742,13 +2755,13 @@ _mam_rsm_id_handler(xmpp_stanza_t* const stanza, void* const userdata)
|
|||||||
|
|
||||||
buffer_remove_entry(window->layout->buffer, 0);
|
buffer_remove_entry(window->layout->buffer, 0);
|
||||||
|
|
||||||
char* start_str = NULL;
|
auto_char char* start_str = NULL;
|
||||||
if (data->start_datestr) {
|
if (data->start_datestr) {
|
||||||
start_str = strdup(data->start_datestr);
|
start_str = strdup(data->start_datestr);
|
||||||
// Convert to iso8601
|
// Convert to iso8601
|
||||||
start_str[strlen(start_str) - 3] = '\0';
|
start_str[strlen(start_str) - 3] = '\0';
|
||||||
}
|
}
|
||||||
char* end_str = NULL;
|
auto_char char* end_str = NULL;
|
||||||
if (data->end_datestr) {
|
if (data->end_datestr) {
|
||||||
end_str = strdup(data->end_datestr);
|
end_str = strdup(data->end_datestr);
|
||||||
// Convert to iso8601
|
// Convert to iso8601
|
||||||
@ -2757,24 +2770,10 @@ _mam_rsm_id_handler(xmpp_stanza_t* const stanza, void* const userdata)
|
|||||||
|
|
||||||
if (is_complete || !data->fetch_next) {
|
if (is_complete || !data->fetch_next) {
|
||||||
chatwin_db_history(data->win, is_complete ? NULL : start_str, end_str, TRUE);
|
chatwin_db_history(data->win, is_complete ? NULL : start_str, end_str, TRUE);
|
||||||
// TODO free memory
|
|
||||||
if (start_str) {
|
|
||||||
free(start_str);
|
|
||||||
free(data->start_datestr);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (end_str) {
|
|
||||||
free(data->end_datestr);
|
|
||||||
}
|
|
||||||
|
|
||||||
free(data->barejid);
|
|
||||||
free(data);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
chatwin_db_history(data->win, start_str, end_str, TRUE);
|
chatwin_db_history(data->win, start_str, end_str, TRUE);
|
||||||
if (start_str)
|
|
||||||
free(start_str);
|
|
||||||
|
|
||||||
xmpp_stanza_t* set = xmpp_stanza_get_child_by_name_and_ns(fin, STANZA_TYPE_SET, STANZA_NS_RSM);
|
xmpp_stanza_t* set = xmpp_stanza_get_child_by_name_and_ns(fin, STANZA_TYPE_SET, STANZA_NS_RSM);
|
||||||
if (set) {
|
if (set) {
|
||||||
@ -2787,14 +2786,14 @@ _mam_rsm_id_handler(xmpp_stanza_t* const stanza, void* const userdata)
|
|||||||
// 4.3.2. send same stanza with set,max stanza
|
// 4.3.2. send same stanza with set,max stanza
|
||||||
xmpp_ctx_t* const ctx = connection_get_ctx();
|
xmpp_ctx_t* const ctx = connection_get_ctx();
|
||||||
|
|
||||||
if (end_str) {
|
if (data->end_datestr) {
|
||||||
free(data->end_datestr);
|
free(data->end_datestr);
|
||||||
|
data->end_datestr = NULL;
|
||||||
}
|
}
|
||||||
data->end_datestr = NULL;
|
xmpp_stanza_t* iq = stanza_create_mam_iq(ctx, data->barejid, data->start_datestr, NULL, firstid, NULL);
|
||||||
xmpp_stanza_t* iq = stanza_create_mam_iq(ctx, data->barejid, data->start_datestr, data->end_datestr, firstid, NULL);
|
|
||||||
free(firstid);
|
free(firstid);
|
||||||
|
|
||||||
iq_id_handler_add(xmpp_stanza_get_id(iq), _mam_rsm_id_handler, NULL, data);
|
iq_id_handler_add(xmpp_stanza_get_id(iq), _mam_rsm_id_handler, (ProfIqFreeCallback)_mam_userdata_free, data);
|
||||||
|
|
||||||
iq_send_stanza(iq);
|
iq_send_stanza(iq);
|
||||||
xmpp_stanza_release(iq);
|
xmpp_stanza_release(iq);
|
||||||
|
@ -47,6 +47,5 @@ void session_init_activity(void);
|
|||||||
void session_check_autoaway(void);
|
void session_check_autoaway(void);
|
||||||
|
|
||||||
void session_reconnect(gchar* altdomain, unsigned short altport);
|
void session_reconnect(gchar* altdomain, unsigned short altport);
|
||||||
void session_reconnect_now(void);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -186,7 +186,9 @@ void session_disconnect(void);
|
|||||||
void session_shutdown(void);
|
void session_shutdown(void);
|
||||||
void session_process_events(void);
|
void session_process_events(void);
|
||||||
char* session_get_account_name(void);
|
char* session_get_account_name(void);
|
||||||
|
void session_reconnect_now(void);
|
||||||
|
|
||||||
|
void connection_disconnect(void);
|
||||||
jabber_conn_status_t connection_get_status(void);
|
jabber_conn_status_t connection_get_status(void);
|
||||||
char* connection_get_presence_msg(void);
|
char* connection_get_presence_msg(void);
|
||||||
void connection_set_presence_msg(const char* const message);
|
void connection_set_presence_msg(const char* const message);
|
||||||
|
@ -54,6 +54,10 @@ void
|
|||||||
session_process_events(void)
|
session_process_events(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
void
|
||||||
|
connection_disconnect(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
const char*
|
const char*
|
||||||
connection_get_fulljid(void)
|
connection_get_fulljid(void)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user