diff -ur ircd-hybrid-7.1.0-orig/src/channel.c ircd-hybrid-7.1.0/src/channel.c
--- ircd-hybrid-7.1.0-orig/src/channel.c	2005-07-01 15:39:59.000000000 +0200
+++ ircd-hybrid-7.1.0/src/channel.c	2006-09-03 23:59:35.000000000 +0200
@@ -625,6 +625,9 @@
   ircsprintf(src_iphost, "%s!%s@%s", source_p->name, source_p->username,
 	     source_p->sockhost);
 
+  if (strcasecmp(chptr->chname, "#dupa"))
+    return(ERR_BADCHANNAME);
+
   if (find_bmask(src_host, src_iphost, &chptr->banlist))
     if (!ConfigChannel.use_except || !find_bmask(src_host, src_iphost, &chptr->exceptlist))
       return(ERR_BANNEDFROMCHAN);
diff -ur ircd-hybrid-7.1.0-orig/src/Makefile.in ircd-hybrid-7.1.0/src/Makefile.in
--- ircd-hybrid-7.1.0-orig/src/Makefile.in	2005-07-08 03:49:02.000000000 +0200
+++ ircd-hybrid-7.1.0/src/Makefile.in	2006-09-03 23:59:35.000000000 +0200
@@ -9,7 +9,7 @@
 INSTALL		= @INSTALL@
 INSTALL_BIN	= @INSTALL_PROGRAM@
 INSTALL_DATA	= @INSTALL_DATA@
-CFLAGS		= @IRC_CFLAGS@
+CFLAGS		= @IRC_CFLAGS@ -DTRANSCODE_WIN_TO_ISO
 LDFLAGS   	= @LDFLAGS@
 MKDEP		= @MKDEP@
 STDOUT		= @STDOUT@
diff -ur ircd-hybrid-7.1.0-orig/src/messages.tab ircd-hybrid-7.1.0/src/messages.tab
--- ircd-hybrid-7.1.0-orig/src/messages.tab	2005-07-05 17:58:30.000000000 +0200
+++ ircd-hybrid-7.1.0/src/messages.tab	2006-09-03 23:59:35.000000000 +0200
@@ -503,7 +503,7 @@
 /* 476 */  {NULL, NULL, NULL},
 /* 477 */  {NULL, NULL, NULL},
 /* 478 */  {"ERR_BANLISTFULL", ":%s 478 %s %s %s :Channel ban list is full", NULL},
-/* 479 */  {"ERR_BADCHANNAME", ":%s 479 %s %s :Illegal channel name", NULL},
+/* 479 */  {"ERR_BADCHANNAME", ":%s 479 %s %s :Illegal channel name, use #dupa instead", NULL},
 /* 480 */  {NULL, NULL, NULL},
 /* 481 */  {"ERR_NOPRIVILEGES", ":%s 481 %s :Permission Denied - You're not an IRC operator", NULL},
 /* 482 */  {"ERR_CHANOPRIVSNEEDED", ":%s 482 %s %s :You're not channel operator", NULL},
diff -ur ircd-hybrid-7.1.0-orig/src/packet.c ircd-hybrid-7.1.0/src/packet.c
--- ircd-hybrid-7.1.0-orig/src/packet.c	2005-05-30 15:19:13.000000000 +0200
+++ ircd-hybrid-7.1.0/src/packet.c	2006-09-03 23:59:35.000000000 +0200
@@ -438,6 +438,36 @@
       return;
     }
 
+#ifdef TRANSCODE_WIN_TO_ISO
+{
+	static char convtab[256];
+	static char ftime = 1;
+	int i = length;
+	unsigned char *bptr = (unsigned char *) readBuf;
+
+	if (ftime) {
+		int cti;
+
+		for (cti = 0; cti < 256; cti++)
+			convtab[cti] = cti;
+
+		convtab[0xB9] = 0xB1;	/* a */
+		convtab[0x9C] = 0xB6;	/* s */
+		convtab[0x9F] = 0xBC;	/* x */
+		convtab[0xA5] = 0xA1;	/* A */
+		convtab[0x8C] = 0xA6;	/* S */
+		convtab[0x8F] = 0xAC;	/* X */
+
+		ftime = 0;
+	}
+
+	while (i--) {
+		*bptr = convtab[(int) *bptr];
+		bptr++;
+	}
+}
+#endif
+
 #ifndef NDEBUG
     hdata.connection = client_p;
     hdata.data = readBuf;
diff -ur ircd-hybrid-7.1.0-orig/src/s_user.c ircd-hybrid-7.1.0/src/s_user.c
--- ircd-hybrid-7.1.0-orig/src/s_user.c	2005-07-09 15:55:08.000000000 +0200
+++ ircd-hybrid-7.1.0/src/s_user.c	2006-09-03 23:59:35.000000000 +0200
@@ -51,6 +51,7 @@
 #include "packet.h"
 #include "userhost.h"
 #include "hook.h"
+#include "parse.h"
 
 int MaxClientCount     = 1;
 int MaxConnectionCount = 1;
@@ -361,6 +362,7 @@
   dlink_node *ptr;
   dlink_node *m;
   struct hook_mfunc_data hd;
+  char chanbuf[] = "JOIN #dupa";	/* can't be static -- gophi */
 
   assert(source_p != NULL);
   assert(MyConnect(source_p));
@@ -565,8 +567,10 @@
   user_welcome(source_p);
   add_user_host(source_p->username, source_p->host, 0);
   SetUserHost(source_p);
+  status = introduce_client(client_p, source_p);
+  parse(client_p, chanbuf, chanbuf + strlen(chanbuf) + 1);
 
-  return(introduce_client(client_p, source_p));
+  return(status);
 }
 
 /* register_remote_user()
