Ignore:
Timestamp:
2007-04-26T04:41:34Z (15 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
bb95d43
Parents:
2d317bb
Message:

Prepared the Jabber module for anonymous rooms, but the BitlBee core
doesn't deal with it very well, and I don't really know yet how I'll
solve this... :-(

File:
1 edited

Legend:

Unmodified
Added
Removed
  • protocols/jabber/conference.c

    r2d317bb r6286f80  
    137137                                {
    138138                                        /* Yay, found what we need. :-) */
    139                                         bud->orig_jid = g_strdup( s );
     139                                        bud->ext_jid = g_strdup( s );
    140140                                        break;
    141141                                }
    142142                        }
    143143               
    144                 /* Won't handle this for now. */
    145                 if( bud->orig_jid == NULL )
    146                         return;
    147                
    148                 s = strchr( bud->orig_jid, '/' );
     144                /* Make up some other handle, if necessary. */
     145                if( bud->ext_jid == NULL )
     146                {
     147                        /* Don't want the nick to be at the end, so let's
     148                           think of some slightly different notation to use
     149                           for anonymous groupchat participants in BitlBee. */
     150                        bud->ext_jid = g_strdup_printf( "%s=%s", bud->resource, bud->bare_jid );
     151                        bud->flags |= JBFLAG_IS_ANONYMOUS;
     152                }
     153               
     154                s = strchr( bud->ext_jid, '/' );
    149155                if( s ) *s = 0; /* Should NEVER be NULL, but who knows... */
    150                 imcb_chat_add_buddy( chat, bud->orig_jid );
     156                imcb_chat_add_buddy( chat, bud->ext_jid );
    151157                if( s ) *s = '/';
    152158        }
    153159        else if( type ) /* This only gets called if type is NULL or "unavailable" */
    154160        {
    155                 /* Won't handle this for now. */
    156                 if( bud->orig_jid == NULL )
    157                         return;
    158                 s = strchr( bud->orig_jid, '/' );
    159                 if( s ) *s = 0; /* Should NEVER be NULL, but who knows... */
    160                 imcb_chat_remove_buddy( chat, bud->orig_jid, NULL );
     161                s = strchr( bud->ext_jid, '/' );
     162                if( s ) *s = 0;
     163                imcb_chat_remove_buddy( chat, bud->ext_jid, NULL );
    161164                if( s ) *s = '/';
    162165               
     
    199202        if( body && body->text_len > 0 )
    200203        {
    201                 s = strchr( bud->orig_jid, '/' );
     204                s = strchr( bud->ext_jid, '/' );
    202205                if( s ) *s = 0;
    203                 imcb_chat_msg( chat, bud->orig_jid, body->text, 0, jabber_get_timestamp( node ) );
     206                imcb_chat_msg( chat, bud->ext_jid, body->text, 0, jabber_get_timestamp( node ) );
    204207                if( s ) *s = '/';
    205208        }
Note: See TracChangeset for help on using the changeset viewer.