diff options
| -rw-r--r-- | ipc.c | 13 | ||||
| -rw-r--r-- | irc_user.c | 4 | 
2 files changed, 17 insertions, 0 deletions
| @@ -49,11 +49,23 @@ static void ipc_master_cmd_client( irc_t *data, char **cmd )  		child->realname = g_strdup( cmd[3] );  	} +	/* CLIENT == On initial connects, HELLO is after /RESTARTs. */  	if( g_strcasecmp( cmd[0], "CLIENT" ) == 0 )  		ipc_to_children_str( "OPERMSG :Client connecting (PID=%d): %s@%s (%s)\r\n",  		                     (int) ( child ? child->pid : -1 ), cmd[2], cmd[1], cmd[3] );  } +static void ipc_master_cmd_nick( irc_t *data, char **cmd ) +{ +	struct bitlbee_child *child = (void*) data; +	 +	if( child && cmd[1] ) +	{ +		g_free( child->nick ); +		child->nick = g_strdup( cmd[1] ); +	} +} +  static void ipc_master_cmd_die( irc_t *data, char **cmd )  {  	if( global.conf->runmode == RUNMODE_FORKDAEMON ) @@ -207,6 +219,7 @@ void ipc_master_cmd_takeover( irc_t *data, char **cmd )  static const command_t ipc_master_commands[] = {  	{ "client",     3, ipc_master_cmd_client,     0 },  	{ "hello",      0, ipc_master_cmd_client,     0 }, +	{ "nick",       1, ipc_master_cmd_nick,       0 },  	{ "die",        0, ipc_master_cmd_die,        0 },  	{ "deaf",       0, ipc_master_cmd_deaf,       0 },  	{ "wallops",    1, NULL,                      IPC_CMD_TO_CHILDREN }, @@ -24,6 +24,7 @@  */  #include "bitlbee.h" +#include "ipc.h"  irc_user_t *irc_user_new( irc_t *irc, const char *nick )  { @@ -157,6 +158,9 @@ int irc_user_set_nick( irc_user_t *iu, const char *new )  	g_hash_table_insert( irc->nick_user_hash, iu->key, iu );  	irc->users = g_slist_insert_sorted( irc->users, iu, irc_user_cmp ); +	if( iu == irc->user ) +		ipc_to_master_str( "NICK :%s\r\n", new ); +	  	return 1;  } | 
