kike: don't disclose secret channels in LUSERS
This commit is contained in:
		
							parent
							
								
									96f4b81182
								
							
						
					
					
						commit
						884c434947
					
				
							
								
								
									
										18
									
								
								src/kike.c
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								src/kike.c
									
									
									
									
									
								
							| @ -725,6 +725,15 @@ irc_send_motd (struct client *c) | |||||||
| 	irc_send_reply (c, IRC_RPL_ENDOFMOTD); | 	irc_send_reply (c, IRC_RPL_ENDOFMOTD); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | static bool | ||||||
|  | client_on_channel (struct client *c, const struct channel *chan) | ||||||
|  | { | ||||||
|  | 	for (struct channel_user *iter = chan->users; iter; iter = iter->next) | ||||||
|  | 		if (!irc_strcmp (iter->nickname, c->nickname)) | ||||||
|  | 			return true; | ||||||
|  | 	return false; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| static void | static void | ||||||
| irc_send_lusers (struct client *c) | irc_send_lusers (struct client *c) | ||||||
| { | { | ||||||
| @ -739,7 +748,14 @@ irc_send_lusers (struct client *c) | |||||||
| 			n_opers++; | 			n_opers++; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	int n_channels = c->ctx->channels.len; | 	int n_channels = 0; | ||||||
|  | 	struct str_map_iter iter; | ||||||
|  | 	str_map_iter_init (&iter, &c->ctx->channels); | ||||||
|  | 	struct channel *chan; | ||||||
|  | 	while ((chan = str_map_iter_next (&iter))) | ||||||
|  | 		if (!(chan->modes & IRC_CHAN_MODE_SECRET) | ||||||
|  | 		 || client_on_channel (c, chan)) | ||||||
|  | 			n_channels++; | ||||||
| 
 | 
 | ||||||
| 	irc_send_reply (c, IRC_RPL_LUSERCLIENT, | 	irc_send_reply (c, IRC_RPL_LUSERCLIENT, | ||||||
| 		n_users, n_services, 1 /* servers total */); | 		n_users, n_services, 1 /* servers total */); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user