Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void JOIN_handler(parselist *list, int sock, char *hn, user* client)
- {
- printf("Entering JOIN handler\n");
- channel* channame = find_channel(list->next->parameter);
- if(channame == NULL) {
- pthread_mutex_lock(&channel_lock);
- channel* new = create_channel(list->next->parameter);
- new->channeluser_list = create_channeluser(client, list->next->parameter, NULL);
- pthread_mutex_unlock(&channel_lock);
- char* joinmsg = malloc(510);
- sprintf(joinmsg,":%s!%s@%s JOIN %s\r\n",
- client->nick,client->username,hn, list->next->parameter);
- printf("join message <%s>\n",joinmsg);
- send_msg(NULL,client->socket,NULL,joinmsg,NULL,client,NULL);
- char* namreply = malloc(510);
- sprintf(namreply,"= #foobar :foobar1 foobar2 foobar3");
- send_msg(RPL_NAMREPLY, sock, client->nick,namreply, client,NULL,NULL);
- char* endofnames = malloc(510);
- sprintf(endofnames,"#foobar :End of NAMES list");
- send_msg(RPL_ENDOFNAMES, sock, client->nick, endofnames,client,NULL,NULL);
- free_list(list);
- //send messages, JOIN repeat + 332/353/366
- } else if (channame != NULL) {
- //channel exists! do other stuff here
- //check if user is already member of channel
- if (find_channeluser(client, channame) != NULL) {
- free_list(list);
- } else {
- //add user to channel's channelusers
- pthread_mutex_lock(&channel_lock);
- channame->channeluser_list =
- create_channeluser(client,list->next->parameter,channame->channeluser_list);
- pthread_mutex_unlock(&channel_lock);
- char* joinmsg = malloc(510);
- sprintf(joinmsg,":%s!%s@%s JOIN %s\r\n",
- client->nick,client->username,hn, channame->name);
- send_msg(NULL,client->socket,NULL,joinmsg,NULL,client,NULL);
- char* namreply = malloc(510);
- sprintf(namreply,"= #foobar :foobar1 foobar2 foobar3");
- send_msg(RPL_NAMREPLY, sock, client->nick,namreply, client,NULL,NULL);
- char* endofnames = malloc(510);
- sprintf(endofnames,"#foobar :End of NAMES list");
- send_msg(RPL_ENDOFNAMES, sock, client->nick, endofnames,client,NULL,NULL);
- //send to all channel's users
- char* joinmsg1 = malloc(510);
- sprintf(joinmsg1,":%s!%s@%s JOIN %s\r\n",
- client->nick,client->username,hn, channame->name);
- send_msg(NULL,0,NULL,joinmsg1,client,NULL,channame);
- free_list(list);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement