- SILC_NICK_REC *rec;
-
- g_return_val_if_fail(IS_SILC_CHANNEL(channel), NULL);
- g_return_val_if_fail(user != NULL, NULL);
-
- rec = g_new0(SILC_NICK_REC, 1);
- rec->nick = g_strdup(user->client->nickname);
- rec->host = g_strdup(user->client->username);
- rec->silc_user = user;
- rec->unique_id = user->client;
-
- if (user->mode & SILC_CHANNEL_UMODE_CHANOP) rec->op = TRUE;
- if (user->mode & SILC_CHANNEL_UMODE_CHANFO) rec->founder = TRUE;
- rec->send_massjoin = send_massjoin;
-
- nicklist_insert(CHANNEL(channel), (NICK_REC *) rec);
- return rec;
+ SILC_NICK_REC *rec;
+
+ g_return_val_if_fail(IS_SILC_CHANNEL(channel), NULL);
+ if (!user)
+ return NULL;
+ if (!user->client)
+ return NULL;
+ if (!user->client->nickname)
+ return NULL;
+
+ rec = g_new0(SILC_NICK_REC, 1);
+ rec->nick = g_strdup(user->client->nickname);
+ rec->host = g_strdup_printf("%s@%s", user->client->username,
+ user->client->hostname);
+ rec->realname = g_strdup(user->client->realname);
+ rec->silc_user = user;
+ rec->unique_id = user->client;
+
+ if (user->mode & SILC_CHANNEL_UMODE_CHANOP)
+ rec->op = TRUE;
+ if (user->mode & SILC_CHANNEL_UMODE_CHANFO)
+ rec->founder = TRUE;
+ rec->send_massjoin = send_massjoin;
+
+ nicklist_insert(CHANNEL(channel), (NICK_REC *) rec);
+ return rec;