projects
/
silc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
silcd: Fixed IDENTIFY command reply handling for channels
[silc.git]
/
apps
/
silcd
/
command_reply.c
diff --git
a/apps/silcd/command_reply.c
b/apps/silcd/command_reply.c
index 47c7a3f5315aad7e49dfb9c552d44e14077072b2..bb32bb2b11b730048440f4d4e6e3b07b72316962 100644
(file)
--- a/
apps/silcd/command_reply.c
+++ b/
apps/silcd/command_reply.c
@@
-603,7
+603,7
@@
silc_server_command_reply_identify_save(SilcServerCommandReplyContext cmd)
char *name, *info;
SilcClientID client_id;
SilcServerID server_id;
char *name, *info;
SilcClientID client_id;
SilcServerID server_id;
- SilcChannelID
*
channel_id;
+ SilcChannelID
channel_id;
SilcClientEntry client;
SilcServerEntry server_entry;
SilcChannelEntry channel;
SilcClientEntry client;
SilcServerEntry server_entry;
SilcChannelEntry channel;
@@
-652,7
+652,7
@@
silc_server_command_reply_identify_save(SilcServerCommandReplyContext cmd)
to global list since server didn't have it in the lists so it must be
global. */
client = silc_idlist_add_client(server->global_list,
to global list since server didn't have it in the lists so it must be
global. */
client = silc_idlist_add_client(server->global_list,
- nick[0] ? strdup(nick) : NULL,
+ nick[0] ? strdup(nick) : NULL,
info ? strdup(info) : NULL, NULL,
silc_id_dup(&client_id, SILC_ID_CLIENT),
silc_packet_get_context(cmd->sock),
info ? strdup(info) : NULL, NULL,
silc_id_dup(&client_id, SILC_ID_CLIENT),
silc_packet_get_context(cmd->sock),
@@
-1287,7
+1287,7
@@
SILC_SERVER_CMD_REPLY_FUNC(users)
if (!channel) {
SilcBuffer idp;
if (!channel) {
SilcBuffer idp;
- if (server->server_type != SILC_SERVER)
+ if (
cmd->pending ||
server->server_type != SILC_SERVER)
goto out;
idp = silc_id_payload_encode(SILC_ID_GET_ID(id), SILC_ID_CHANNEL);
goto out;
idp = silc_id_payload_encode(SILC_ID_GET_ID(id), SILC_ID_CHANNEL);
@@
-1302,6
+1302,8
@@
SILC_SERVER_CMD_REPLY_FUNC(users)
silc_server_command_pending(server, SILC_COMMAND_IDENTIFY,
server->cmd_ident,
silc_server_command_reply_users, cmd);
silc_server_command_pending(server, SILC_COMMAND_IDENTIFY,
server->cmd_ident,
silc_server_command_reply_users, cmd);
+
+ cmd->pending = TRUE;
return;
}
}
return;
}
}