Fix chanopts not saving if /quit before exit
This is the C fix, unfortunately a proper fix, e.g. removing the dependency on session_name all together is a much vaster refactor outside the scope of this bugfix. Closes #1111
This commit is contained in:
parent
10246f121a
commit
6aafc8e51d
|
@ -119,7 +119,7 @@ chanopt_command (session *sess, char *tbuf, char *word[], char *word_eol[])
|
||||||
if (!quiet)
|
if (!quiet)
|
||||||
PrintTextf (sess, "\002Network\002: %s \002Channel\002: %s\n",
|
PrintTextf (sess, "\002Network\002: %s \002Channel\002: %s\n",
|
||||||
sess->server->network ? server_get_network (sess->server, TRUE) : _("<none>"),
|
sess->server->network ? server_get_network (sess->server, TRUE) : _("<none>"),
|
||||||
sess->channel[0] ? sess->channel : _("<none>"));
|
sess->session_name[0] ? sess->session_name : _("<none>"));
|
||||||
|
|
||||||
while (i < sizeof (chanopt) / sizeof (channel_options))
|
while (i < sizeof (chanopt) / sizeof (channel_options))
|
||||||
{
|
{
|
||||||
|
@ -298,7 +298,7 @@ chanopt_load (session *sess)
|
||||||
chanopt_in_memory *co;
|
chanopt_in_memory *co;
|
||||||
char *network;
|
char *network;
|
||||||
|
|
||||||
if (sess->channel[0] == 0)
|
if (sess->session_name[0] == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
network = server_get_network (sess->server, FALSE);
|
network = server_get_network (sess->server, FALSE);
|
||||||
|
@ -311,7 +311,7 @@ chanopt_load (session *sess)
|
||||||
chanopt_load_all ();
|
chanopt_load_all ();
|
||||||
}
|
}
|
||||||
|
|
||||||
co = chanopt_find (network, sess->channel, FALSE);
|
co = chanopt_find (network, sess->session_name, FALSE);
|
||||||
if (!co)
|
if (!co)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -334,7 +334,7 @@ chanopt_save (session *sess)
|
||||||
chanopt_in_memory *co;
|
chanopt_in_memory *co;
|
||||||
char *network;
|
char *network;
|
||||||
|
|
||||||
if (sess->channel[0] == 0)
|
if (sess->session_name[0] == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
network = server_get_network (sess->server, FALSE);
|
network = server_get_network (sess->server, FALSE);
|
||||||
|
@ -343,7 +343,7 @@ chanopt_save (session *sess)
|
||||||
|
|
||||||
/* 2. reconcile sess with what we loaded from disk */
|
/* 2. reconcile sess with what we loaded from disk */
|
||||||
|
|
||||||
co = chanopt_find (network, sess->channel, TRUE);
|
co = chanopt_find (network, sess->session_name, TRUE);
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
while (i < sizeof (chanopt) / sizeof (channel_options))
|
while (i < sizeof (chanopt) / sizeof (channel_options))
|
||||||
|
|
|
@ -480,7 +480,10 @@ session_new (server *serv, char *from, int type, int focus)
|
||||||
sess->lastact_idx = LACT_NONE;
|
sess->lastact_idx = LACT_NONE;
|
||||||
|
|
||||||
if (from != NULL)
|
if (from != NULL)
|
||||||
|
{
|
||||||
safe_strcpy(sess->channel, from, CHANLEN);
|
safe_strcpy(sess->channel, from, CHANLEN);
|
||||||
|
safe_strcpy(sess->session_name, from, CHANLEN);
|
||||||
|
}
|
||||||
|
|
||||||
sess_list = g_slist_prepend (sess_list, sess);
|
sess_list = g_slist_prepend (sess_list, sess);
|
||||||
|
|
||||||
|
|
|
@ -388,6 +388,7 @@ typedef struct session
|
||||||
char channel[CHANLEN];
|
char channel[CHANLEN];
|
||||||
char waitchannel[CHANLEN]; /* waiting to join channel (/join sent) */
|
char waitchannel[CHANLEN]; /* waiting to join channel (/join sent) */
|
||||||
char willjoinchannel[CHANLEN]; /* will issue /join for this channel */
|
char willjoinchannel[CHANLEN]; /* will issue /join for this channel */
|
||||||
|
char session_name[CHANLEN]; /* the name of the session, should not modified */
|
||||||
char channelkey[64]; /* XXX correct max length? */
|
char channelkey[64]; /* XXX correct max length? */
|
||||||
int limit; /* channel user limit */
|
int limit; /* channel user limit */
|
||||||
int logfd;
|
int logfd;
|
||||||
|
|
Loading…
Reference in New Issue