degesch: make a second /disconnect always succeed
This commit is contained in:
parent
f45f9ab873
commit
1313a712df
13
degesch.c
13
degesch.c
|
@ -4948,11 +4948,19 @@ irc_initiate_disconnect (struct server *s, const char *reason)
|
||||||
{
|
{
|
||||||
hard_assert (irc_is_connected (s));
|
hard_assert (irc_is_connected (s));
|
||||||
|
|
||||||
s->manual_disconnect = true;
|
// It can take a very long time for sending QUIT to take effect
|
||||||
if (reason)
|
if (s->manual_disconnect)
|
||||||
|
{
|
||||||
|
log_server_error (s, s->buffer, "%s: %s", "Disconnected from server",
|
||||||
|
"connection torn down early per user request");
|
||||||
|
irc_disconnect (s);
|
||||||
|
}
|
||||||
|
else if (reason)
|
||||||
irc_send (s, "QUIT :%s", reason);
|
irc_send (s, "QUIT :%s", reason);
|
||||||
else
|
else
|
||||||
irc_send (s, "QUIT :%s", PROGRAM_NAME " " PROGRAM_VERSION);
|
irc_send (s, "QUIT :%s", PROGRAM_NAME " " PROGRAM_VERSION);
|
||||||
|
|
||||||
|
s->manual_disconnect = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -11125,6 +11133,7 @@ handle_command_quit (struct handler_args *a)
|
||||||
struct str_map_iter iter;
|
struct str_map_iter iter;
|
||||||
str_map_iter_init (&iter, &a->ctx->servers);
|
str_map_iter_init (&iter, &a->ctx->servers);
|
||||||
|
|
||||||
|
// FIXME: we should pass the message as an argument to initiate_quit()
|
||||||
struct server *s;
|
struct server *s;
|
||||||
while ((s = str_map_iter_next (&iter)))
|
while ((s = str_map_iter_next (&iter)))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue