- tmp = silc_argument_get_arg_type(args, 2, &len);
- if (!tmp)
- return 0;
- *ret_arg1 = silc_id_payload_parse_id(tmp, len, NULL);
- if (!(*ret_arg1))
- return 0;
- num = 1;
- tmp = silc_argument_get_arg_type(args, 3, &len);
- if (!tmp)
- return num;
- *ret_arg2 = silc_id_payload_parse_id(tmp, len, NULL);
- if (!(*ret_arg2))
- return num;
- num = 2;
+ {
+ SilcClientID client_id;
+ SilcChannelID channel_id;
+ SilcIdType type;
+ tmp = silc_argument_get_arg_type(args, 2, &len);
+ if (!tmp)
+ return 0;
+ if (silc_id_payload_parse_id(tmp, len, &type, &client_id,
+ sizeof(client_id)))
+ return 0;
+ *ret_arg1 = silc_id_dup(&client_id, type);
+ if (!(*ret_arg1))
+ return 0;
+ num = 1;
+ tmp = silc_argument_get_arg_type(args, 3, &len);
+ if (!tmp)
+ return num;
+ if (silc_id_payload_parse_id(tmp, len, &type, &channel_id,
+ sizeof(channel_id)))
+ return 0;
+ *ret_arg2 = silc_id_dup(&channel_id, type);
+ if (!(*ret_arg2))
+ return num;
+ num = 2;
+ }