Changeset d88c92a for protocols/jabber
- Timestamp:
- 2010-12-06T00:03:49Z (14 years ago)
- Branches:
- master
- Children:
- d76e12f
- Parents:
- a429907
- Location:
- protocols/jabber
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
protocols/jabber/iq.c
ra429907 rd88c92a 794 794 return XT_HANDLED; 795 795 } 796 797 static xt_status jabber_iq_version_response( struct im_connection *ic, 798 struct xt_node *node, struct xt_node *orig ); 799 800 void jabber_iq_version_send( struct im_connection *ic, struct jabber_buddy *bud, void *data ) 801 { 802 struct xt_node *node, *query; 803 804 node = xt_new_node( "query", NULL, NULL ); 805 xt_add_attr( node, "xmlns", XMLNS_VERSION ); 806 query = jabber_make_packet( "iq", "get", bud->full_jid, node ); 807 jabber_cache_add( ic, query, jabber_iq_version_response ); 808 809 jabber_write_packet( ic, query ); 810 } 811 812 static xt_status jabber_iq_version_response( struct im_connection *ic, 813 struct xt_node *node, struct xt_node *orig ) 814 { 815 struct xt_node *query; 816 GString *rets; 817 char *s; 818 char *ret[2] = {}; 819 bee_user_t *bu; 820 struct jabber_buddy *bud = NULL; 821 822 if( ( s = xt_find_attr( node, "from" ) ) && 823 ( bud = jabber_buddy_by_jid( ic, s, 0 ) ) && 824 ( query = xt_find_node( node->children, "query" ) ) && 825 ( bu = bee_user_by_handle( ic->bee, ic, bud->bare_jid ) ) ) 826 { 827 rets = g_string_new( "Resource " ); 828 g_string_append( rets, bud->resource ); 829 } 830 else 831 return XT_HANDLED; 832 833 for( query = query->children; query; query = query->next ) 834 if( query->text_len > 0 ) 835 g_string_append_printf( rets, " %s: %s,", query->name, query->text ); 836 837 g_string_truncate( rets, rets->len - 1 ); 838 ret[0] = rets->str; 839 imcb_buddy_action_response( bu, "VERSION", ret, NULL ); 840 g_string_free( rets, TRUE ); 841 842 return XT_HANDLED; 843 } -
protocols/jabber/jabber.c
ra429907 rd88c92a 564 564 } 565 565 566 GList *jabber_buddy_action_list( bee_user_t *bu ) 567 { 568 static GList *ret = NULL; 569 570 if( ret == NULL ) 571 { 572 struct buddy_action ba[2] = { 573 { "VERSION", "Get client (version) information" }, 574 }; 575 576 ret = g_list_prepend( ret, ba + 0 ); 577 } 578 579 return ret; 580 } 581 582 void *jabber_buddy_action( struct bee_user *bu, const char *action, char * const args[], void *data ) 583 { 584 if( g_strcasecmp( action, "VERSION" ) == 0 ) 585 { 586 struct jabber_buddy *bud; 587 588 if( ( bud = jabber_buddy_by_ext_jid( bu->ic, bu->handle, 0 ) ) == NULL ) 589 bud = jabber_buddy_by_jid( bu->ic, bu->handle, GET_BUDDY_FIRST ); 590 for( ; bud; bud = bud->next ) 591 jabber_iq_version_send( bu->ic, bud, data ); 592 } 593 594 return NULL; 595 } 596 566 597 void jabber_initmodule() 567 598 { … … 591 622 ret->handle_cmp = g_strcasecmp; 592 623 ret->transfer_request = jabber_si_transfer_request; 624 ret->buddy_action_list = jabber_buddy_action_list; 625 ret->buddy_action = jabber_buddy_action; 593 626 594 627 register_protocol( ret ); -
protocols/jabber/jabber.h
ra429907 rd88c92a 241 241 xt_status jabber_iq_query_features( struct im_connection *ic, char *bare_jid ); 242 242 xt_status jabber_iq_query_server( struct im_connection *ic, char *jid, char *xmlns ); 243 void jabber_iq_version_send( struct im_connection *ic, struct jabber_buddy *bud, void *data ); 243 244 244 245 /* si.c */
Note: See TracChangeset
for help on using the changeset viewer.