+ /* Iterate channels and send channel links info */
+ ch_itr = NULL;
+ while (Chan_iterate(&ch_itr) != NULL) {
+ if (ch_itr->linkcount > 0) { /* Has links */
+ uint32_t *links;
+ int i = 0;
+ struct dlist *itr;
+
+ sendmsg = Msg_create(ChannelState);
+ sendmsg->payload.channelState->has_channel_id = true;
+ sendmsg->payload.channelState->channel_id = ch_itr->id;
+ sendmsg->payload.channelState->n_links = ch_itr->linkcount;
+
+ links = (uint32_t *)malloc(ch_itr->linkcount * sizeof(uint32_t));
+ list_iterate(itr, &ch_itr->channel_links) { /* Iterate links */
+ channel_t *ch;
+ ch = list_get_entry(itr, channel_t, link_node);
+ links[i++] = ch->id;
+ }
+ sendmsg->payload.channelState->links = links;
+ Client_send_message(client, sendmsg);
+ }
+ }