diff -up ii-1.4/ii.c ii-1.5/ii.c
--- ii-1.4/ii.c	2008-08-09 06:47:33.000000000 -0500
+++ ii-1.5/ii.c	2011-01-10 06:27:15.000000000 -0600
@@ -110,7 +110,7 @@ static void add_channel(char *name) {
 	int fd;
 
 	for(c = channels; c; c = c->next)
-		if(!strcmp(name, c->name))
+		if(!strcmp(striplower(name), c->name))
 			return; /* already handled */
 
 	fd = open_channel(name);
@@ -233,7 +233,7 @@ static void proc_channels_input(Channel 
 		return;
 	}
 	message[0] = '\0';
-	switch (buf[1]) {
+	if( buf[2] == ' ' || buf[2] == '\0' ) switch (buf[1]) {
 		case 'j':
 			p = strchr(&buf[3], ' ');
 			if(p) *p = 0;
@@ -288,6 +288,8 @@ static void proc_channels_input(Channel 
 			snprintf(message, PIPE_BUF, "%s\r\n", &buf[1]);
 			break;
 	}
+	if( buf[2] != ' ')
+		snprintf(message, PIPE_BUF, "%s\r\n", &buf[1]);
 	if (message[0] != '\0')
 		write(irc, message, strlen(message));
 }
