aboutsummaryrefslogtreecommitdiff
path: root/degesch.c
diff options
context:
space:
mode:
authorPřemysl Janouch <p.janouch@gmail.com>2015-07-11 04:54:07 +0200
committerPřemysl Janouch <p.janouch@gmail.com>2015-07-11 04:55:34 +0200
commitf2a6c0f29964e6f531c10f935288419c6a57f2ea (patch)
tree3d37e2ef7221513ce40921c7dc276b7330b02771 /degesch.c
parentd27a23a7d6ad3f5b35967cfecf64a4ebfa4b31c6 (diff)
downloadxK-f2a6c0f29964e6f531c10f935288419c6a57f2ea.tar.gz
xK-f2a6c0f29964e6f531c10f935288419c6a57f2ea.tar.xz
xK-f2a6c0f29964e6f531c10f935288419c6a57f2ea.zip
degesch: log disconnection in all buffers
Diffstat (limited to 'degesch.c')
-rw-r--r--degesch.c32
1 files changed, 22 insertions, 10 deletions
diff --git a/degesch.c b/degesch.c
index a6826d6..f87b4f9 100644
--- a/degesch.c
+++ b/degesch.c
@@ -3517,10 +3517,9 @@ initiate_quit (struct app_context *ctx)
// Destroy the user interface
input_stop (&ctx->input);
+ // Initiate a connection close
struct str_map_iter iter;
str_map_iter_init (&iter, &ctx->servers);
-
- // Initiate a connection close
struct server *s;
while ((s = str_map_iter_next (&iter)))
{
@@ -3541,11 +3540,8 @@ initiate_quit (struct app_context *ctx)
}
static void
-irc_disconnect (struct server *s)
+irc_destroy_transport (struct server *s)
{
- hard_assert (irc_is_connected (s));
-
- // Get rid of the dead socket
if (s->transport
&& s->transport->cleanup)
s->transport->cleanup (s);
@@ -3560,11 +3556,11 @@ irc_disconnect (struct server *s)
str_reset (&s->read_buffer);
str_reset (&s->write_buffer);
+}
- // All of our timers have lost their meaning now
- irc_cancel_timers (s);
-
- // Reset state bound to the connection
+static void
+irc_destroy_state (struct server *s)
+{
struct str_map_iter iter;
str_map_iter_init (&iter, &s->irc_channels);
struct channel *channel;
@@ -3588,6 +3584,22 @@ irc_disconnect (struct server *s)
server_free_specifics (s);
server_init_specifics (s);
+}
+
+static void
+irc_disconnect (struct server *s)
+{
+ hard_assert (irc_is_connected (s));
+
+ struct str_map_iter iter;
+ str_map_iter_init (&iter, &s->irc_buffer_map);
+ struct buffer *buffer;
+ while ((buffer = str_map_iter_next (&iter)))
+ log_server_status (s, buffer, "Disconnected from server");
+
+ irc_cancel_timers (s);
+ irc_destroy_transport (s);
+ irc_destroy_state (s);
// Take any relevant actions
if (s->ctx->quitting)