diff options
Diffstat (limited to 'agni.c')
-rw-r--r-- | agni.c | 37 |
1 files changed, 27 insertions, 10 deletions
@@ -443,7 +443,7 @@ int th_start_client(void *data) char *sep = strchr(uname,'!'); uname[sep-uname] = 0x0; - PRINT() + PNL() //if (token_cmp(itok,3,":join") == 1) if (strncmp(":join",msg,5)==0) { @@ -451,15 +451,32 @@ int th_start_client(void *data) //lets check if one more argument is there { - //PNL(); - char *sep_chan = strchr(msg,' '); - - //lets join channel - memset(cmd_buf, 0, TH_CONN_BUF_SZ); - int fret = snprintf(cmd_buf, TH_CONN_BUF_SZ, ":%s JOIN %s\r\n", dest_name, sep_chan); - PRINT("cmd_buf %s\n", cmd_buf); - write(conn, cmd_buf, fret); - + char *chan_name=NULL; + int iter=0; + char *sep_chan = strchr(msg,' ')+1; + + //check if channel in allowed list, if yes then continue + iter=0; + while (cfg->channels[iter]!=NULL) + { + chan_name = cfg->channels[iter]; + if ((strncmp(chan_name,sep_chan,strlen(chan_name))==0) + && (strlen(sep_chan)==strlen(chan_name))) + { + //lets join channel + memset(cmd_buf, 0, TH_CONN_BUF_SZ); + int fret = snprintf(cmd_buf, TH_CONN_BUF_SZ, ":%s JOIN %s\r\n", dest_name, sep_chan); + PRINT("cmd_buf %s\n", cmd_buf); + write(conn, cmd_buf, fret); + break; + } + PNL(); + iter++; + if (cfg->channels[iter]==NULL) + { + PRINT("Cant find this chan in da list\n"); + } + } } } else { |