Changeset 70f6aab8


Ignore:
Timestamp:
2006-09-20T20:09:19Z (14 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
0b4a0db
Parents:
21167d2
Message:

It now requests a roster when logged in, no parsing for it yet.

Location:
protocols/jabber
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • protocols/jabber/iq.c

    r21167d2 r70f6aab8  
    2424#include "jabber.h"
    2525
    26 /*
    27 <iq xmlns="jabber:client" id="BeeX00000001" type="result"><query
    28 xmlns="jabber:iq:auth"><username>wilmer</username><resource/><password/><digest/>
    29 <sequence>499</sequence><token>450D1FFD</token></query></iq>
    30 */
    31 
    3226xt_status jabber_pkt_iq( struct xt_node *node, gpointer data )
    3327{
     
    3529        struct jabber_data *jd = gc->proto_data;
    3630        struct xt_node *query, *reply = NULL;
    37         char *s;
     31        char *s, *type, *xmlns;
    3832        int st;
    3933       
    4034        query = xt_find_node( node->children, "query" );
     35        type = xt_find_attr( node, "type" );
    4136       
    42         if( !query )
     37        if( !type )
    4338                return XT_HANDLED;      /* Ignore it for now, don't know what's best... */
    4439       
    45         if( ( s = xt_find_attr( query, "xmlns" ) ) && strcmp( s, "jabber:iq:auth" ) == 0 )
     40        xmlns = xt_find_attr( query, "xmlns" );
     41       
     42        if( strcmp( type, "result" ) == 0 && xmlns && strcmp( xmlns, "jabber:iq:auth" ) == 0 )
    4643        {
    4744                /* Time to authenticate ourselves! */
     
    7976                        xt_free_node( reply );
    8077                       
    81                         hide_login_progress_error( gc, "Can't find suitable authentication method" );
     78                        hide_login_progress( gc, "Can't find suitable authentication method" );
    8279                        signoff( gc );
    8380                        return XT_ABORT;
     
    8986               
    9087                return st ? XT_HANDLED : XT_ABORT;
     88        }
     89        else if( strcmp( type, "result" ) == 0 )
     90        {
     91                /* If we weren't authenticated yet, let's assume we are now.
     92                   There are cleaner ways to do this, probably, but well.. */
     93                if( !( jd->flags & JFLAG_AUTHENTICATED ) )
     94                {
     95                        jd->flags |= JFLAG_AUTHENTICATED;
     96                        if( !jabber_get_roster( gc ) )
     97                                return XT_ABORT;
     98                }
     99        }
     100        else if( strcmp( type, "error" ) == 0 )
     101        {
     102                if( !( jd->flags & JFLAG_AUTHENTICATED ) )
     103                {
     104                        hide_login_progress( gc, "Authentication failure" );
     105                        signoff( gc );
     106                        return XT_ABORT;
     107                }
    91108        }
    92109       
     
    109126        return st;
    110127}
     128
     129int jabber_get_roster( struct gaim_connection *gc )
     130{
     131        struct xt_node *node;
     132        int st;
     133       
     134        set_login_progress( gc, 1, "Authenticated, requesting buddy list" );
     135       
     136        node = xt_new_node( "query", NULL, NULL );
     137        xt_add_attr( node, "xmlns", "jabber:iq:roster" );
     138        node = jabber_make_packet( "iq", "get", NULL, node );
     139       
     140        st = jabber_write_packet( gc, node );
     141       
     142        xt_free_node( node );
     143        return st;
     144}
  • protocols/jabber/jabber.c

    r21167d2 r70f6aab8  
    101101                closesocket( jd->fd );
    102102       
     103        xt_free( jd->xt );
     104       
    103105        g_free( jd->username );
    104106        g_free( jd );
  • protocols/jabber/jabber.h

    r21167d2 r70f6aab8  
    3939xt_status jabber_pkt_iq( struct xt_node *node, gpointer data );
    4040int jabber_start_auth( struct gaim_connection *gc );
     41int jabber_get_roster( struct gaim_connection *gc );
    4142
    4243xt_status jabber_pkt_message( struct xt_node *node, gpointer data );
Note: See TracChangeset for help on using the changeset viewer.