aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ipc.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/ipc.c b/ipc.c
index 6903c898..aad05bbf 100644
--- a/ipc.c
+++ b/ipc.c
@@ -321,12 +321,18 @@ static void ipc_child_cmd_takeover( irc_t *irc, char **cmd )
{
GSList *l;
+ /* TODO: Move this all into irc_switch_fd() or so and
+ irc_sync() */
b_event_remove( irc->r_watch_source_id );
closesocket( irc->fd );
irc->fd = ipc_child_recv_fd;
irc->r_watch_source_id = b_input_add( irc->fd, B_EV_IO_READ, bitlbee_io_current_client_read, irc );
ipc_child_recv_fd = -1;
+ irc_write( irc, ":%s!%s@%s MODE %s :%s", irc->user->nick,
+ irc->user->user, irc->user->host, irc->user->nick,
+ irc->umode );
+
for( l = irc->channels; l; l = l->next )
{
irc_channel_t *ic = l->data;
@@ -375,6 +381,10 @@ static void ipc_child_cmd_takeover_yes( void *data )
for( l = irc->channels; l; l = l->next )
irc_channel_del_user( l->data, irc->user, IRC_CDU_KICK,
"Switching to old session" );
+
+ irc_write( irc, ":%s!%s@%s MODE %s :-%s", irc->user->nick,
+ irc->user->user, irc->user->host, irc->user->nick,
+ irc->umode );
}
static void ipc_child_cmd_takeover_no( void *data )