Changeset 172a73f1 for protocols/jabber


Ignore:
Timestamp:
2006-09-24T10:25:41Z (18 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
42127dc
Parents:
5e202b0
Message:

Updated <presence> stuff to handle changing the priority setting.

Location:
protocols/jabber
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • protocols/jabber/jabber.c

    r5e202b0 r172a73f1  
    152152        jd->away_message = ( message && *message ) ? g_strdup( message ) : NULL;
    153153       
    154         presence_send( gc, NULL, jd->away_state->code, jd->away_message );
     154        presence_send_update( gc );
    155155}
    156156
  • protocols/jabber/jabber.h

    r5e202b0 r172a73f1  
    5454        char *username;         /* USERNAME@server */
    5555        char *server;           /* username@SERVER -=> server/domain, not hostname */
     56       
     57        /* After changing one of these two (or the priority setting), call
     58           presence_send_update() to inform the server about the changes. */
    5659        struct jabber_away_state *away_state;
    5760        char *away_message;
     
    7578/* presence.c */
    7679xt_status jabber_pkt_presence( struct xt_node *node, gpointer data );
    77 int presence_send( struct gaim_connection *gc, char *to, char *show, char *status );
     80int presence_send_update( struct gaim_connection *gc );
    7881
    7982/* jabber_util.c */
  • protocols/jabber/jabber_util.c

    r5e202b0 r172a73f1  
    2929{
    3030        account_t *acc = set->data;
     31        char *ret;
    3132       
    32         /* Only run this stuff if the account is online ATM. */
    33         if( acc->gc )
     33        if( strcmp( set->key, "priority" ) == 0 )
     34                ret = set_eval_int( set, value );
     35        else
     36                ret = value;
     37       
     38        /* Only run this stuff if the account is online ATM,
     39           and if the setting seems to be acceptable. */
     40        if( acc->gc && ret )
    3441        {
    35                 /* ... */
     42                if( strcmp( set->key, "priority" ) == 0 )
     43                {
     44                        /* Although set_eval functions usually are very nice
     45                           and convenient, they have one disadvantage: If I
     46                           would just call p_s_u() now to send the new prio
     47                           setting, it would send the old setting because the
     48                           set->value gets changed when the eval returns a
     49                           non-NULL value.
     50                           
     51                           So now I can choose between implementing post-set
     52                           functions next to evals, or just do this little
     53                           hack: */
     54                        g_free( set->value );
     55                        set->value = g_strdup( ret );
     56                       
     57                        /* (Yes, sorry, I prefer the hack. :-P) */
     58                       
     59                        presence_send_update( acc->gc );
     60                }
     61                else
     62                {
     63                }
    3664        }
    3765       
    38         if( g_strcasecmp( set->key, "priority" ) == 0 )
    39                 return set_eval_int( set, value );
    40         else
    41                 return value;
     66        return ret;
    4267}
    4368
  • protocols/jabber/presence.c

    r5e202b0 r172a73f1  
    5454}
    5555
    56 int presence_send( struct gaim_connection *gc, char *to, char *show, char *status )
     56/* Whenever presence information is updated, call this function to inform the
     57   server. */
     58int presence_send_update( struct gaim_connection *gc )
    5759{
     60        struct jabber_data *jd = gc->proto_data;
    5861        struct xt_node *node;
     62        char *show = jd->away_state->code;
     63        char *status = jd->away_message;
    5964        int st;
    6065       
    61         node = jabber_make_packet( "presence", NULL, to, NULL );
     66        node = jabber_make_packet( "presence", NULL, NULL, NULL );
    6267        if( show && *show )
    6368                xt_add_child( node, xt_new_node( "show", show, NULL ) );
    6469        if( status )
    6570                xt_add_child( node, xt_new_node( "status", status, NULL ) );
     71        /* if( set_getint( &gc->acc->set, "priority" ) != 0 ) */
     72        /* Let's just send this every time... */
     73                xt_add_child( node, xt_new_node( "priority", set_getstr( &gc->acc->set, "priority" ), NULL ) );
    6674       
    6775        st = jabber_write_packet( gc, node );
Note: See TracChangeset for help on using the changeset viewer.