diff -u -r bitlbee-3.0.1/protocols/jabber/conference.c bitlbee-3.0.1-hack/protocols/jabber/conference.c
--- bitlbee-3.0.1/protocols/jabber/conference.c 2010-11-24 14:44:00.000000000 -0800
+++ bitlbee-3.0.1-hack/protocols/jabber/conference.c    2011-02-22 11:14:55.000000000 -0800
@@ -241,7 +241,7 @@
                                if( ( s = xt_find_attr( item, "jid" ) ) )
                                {
                                        /* Yay, found what we need. :-) */
-                                       bud->ext_jid = jabber_normalize( s );
+                                       bud->ext_jid = jabber_normalize_lcnicks( ic, s );
                                        break;
                                }
                        }
@@ -251,7 +251,7 @@
                {
                        if( bud == jc->me )
                        {
-                               bud->ext_jid = jabber_normalize( ic->acc->user );
+                               bud->ext_jid = jabber_normalize_lcnicks( ic, ic->acc->user );
                        }
                        else
                        {
diff -u -r bitlbee-3.0.1/protocols/jabber/jabber.h bitlbee-3.0.1-hack/protocols/jabber/jabber.h
--- bitlbee-3.0.1/protocols/jabber/jabber.h     2010-11-24 14:44:00.000000000 -0800
+++ bitlbee-3.0.1-hack/protocols/jabber/jabber.h        2011-02-22 11:15:16.000000000 -0800
@@ -273,6 +273,7 @@
 const struct jabber_away_state *jabber_away_state_by_name( char *name );
 void jabber_buddy_ask( struct im_connection *ic, char *handle );
 char *jabber_normalize( const char *orig );
+char *jabber_normalize_lcnicks( struct im_connection *ic, const char *orig );

 typedef enum
 {
diff -u -r bitlbee-3.0.1/protocols/jabber/jabber_util.c bitlbee-3.0.1-hack/protocols/jabber/jabber_util.c
--- bitlbee-3.0.1/protocols/jabber/jabber_util.c        2010-11-24 14:44:00.000000000 -0800
+++ bitlbee-3.0.1-hack/protocols/jabber/jabber_util.c   2011-02-22 11:21:59.000000000 -0800
@@ -307,6 +307,26 @@
        g_free( buf );
 }

+/* Same as jabber_normalize, but respects lcnicks */
+char *jabber_normalize_lcnicks( struct im_connection *ic, const char *orig )
+{
+       int len, i;
+       char *new;
+
+       len = strlen( orig );
+       new = g_new( char, len + 1 );
+
+       for( i = 0; orig[i] ; i ++ )
+               new[i] = orig[i];
+
+       new[i] = 0;
+
+        if( set_getbool( &ic->bee->set, "lcnicks" ) )
+            nick_lc( new );
+
+       return new;
+}
+
 /* Returns a new string. Don't leak it! */
 char *jabber_normalize( const char *orig )
 {
