In the current version of the Go server one can read the following line in the handleHello function:

for _, chid := range f["channelIDs"].([]interface{}) {
    channelID := chid.(string)
    if filter.Find([]byte(channelID)) != nil {
        verbose(fmt.Sprintf("Skipping invalid channel %s", chid))
        continue
    }   

    if gServerState.UAIDToChannelIDs[client.UAID] == nil {
        //gServerState.UAIDToChannelIDs[client.UAID] = make(ChannelIDSet)
        // since we don't have any channelIDs, don't bother looping
        //any more
        verbose("No channels found for UAID, resetting...")
        resetClient = true
        break
    }
    ...   

Looking at the comment there it looks like the implementation has changed. So I looked back in the commit history I could find where the support for channelIDs was added, git show 7364cbe:server.go:

if (f["channelIDs"] != nil) {
    for _, foo := range f["channelIDs"].([]interface {}) {
        channelID := foo.(string)
        log.Println("Got CHID ", channelID);
        c := &Channel{client.UAID, channelID, ""};
        gUAIDToChannel[client.UAID] = append(gUAIDToChannel[client.UAID], c);
        gChannelIDToChannel[channelID] = c;
    }
}

If I'm reading this correctly this is going through all the elements in the 'channelIDs' field, creating a channel for each channelId, adding this new channel to that UserAgents channels. I'm sure I'm missing some details here as the above looks like it will add more and more channels even if they already exits, but we don't do that.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira