Ignore:
Timestamp:
2006-09-20T19:42:27Z (16 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
70f6aab8
Parents:
f06894d
Message:

It can send a valid (pre-XMPP) login packet. Lots of work to do, still...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • protocols/jabber/jabber.c

    rf06894d r21167d2  
    2828#include <stdio.h>
    2929
     30#include "ssl_client.h"
    3031#include "xmltree.h"
    3132#include "bitlbee.h"
     
    5556static void jabber_login( account_t *acc )
    5657{
     58        struct gaim_connection *gc = new_gaim_conn( acc );
     59        struct jabber_data *jd = g_new0( struct jabber_data, 1 );
     60       
     61        jd->gc = gc;
     62        gc->proto_data = jd;
     63       
     64        jd->username = g_strdup( acc->user );
     65        jd->server = strchr( jd->username, '@' );
     66       
     67        if( jd->server == NULL )
     68        {
     69                hide_login_progress( gc, "Incomplete account name (format it like <username@jabberserver.name>)" );
     70                signoff( gc );
     71                return;
     72        }
     73       
     74        /* So don't think of free()ing jd->server.. :-) */
     75        *jd->server = 0;
     76        jd->server ++;
     77       
     78        if( set_getbool( &acc->set, "ssl" ) )
     79        {
     80                signoff( gc );
     81                /* TODO! */
     82        }
     83        else
     84        {
     85                jd->fd = proxy_connect( jd->server, set_getint( &acc->set, "port" ), jabber_connected_plain, gc );
     86        }
    5787}
    5888
    5989static void jabber_close( struct gaim_connection *gc )
    6090{
     91        struct jabber_data *jd = gc->proto_data;
     92       
     93        if( jd->r_inpa >= 0 )
     94                b_event_remove( jd->r_inpa );
     95        if( jd->w_inpa >= 0 )
     96                b_event_remove( jd->w_inpa );
     97       
     98        if( jd->ssl )
     99                ssl_disconnect( jd->ssl );
     100        if( jd->fd >= 0 )
     101                closesocket( jd->fd );
     102       
     103        g_free( jd->username );
     104        g_free( jd );
    61105}
    62106
    63107static int jabber_send_im( struct gaim_connection *gc, char *who, char *message, int len, int away )
    64108{
     109        return 0;
    65110}
    66111
     
    96141}
    97142
    98 static xt_status jabber_end_of_stream( struct xt_node *node, gpointer data )
    99 {
    100         return XT_ABORT;
    101 }
    102 
    103 static xt_status jabber_pkt_misc( struct xt_node *node, gpointer data )
    104 {
    105         printf( "Received unknown packet:\n" );
    106         xt_print( node );
    107        
    108         return XT_HANDLED;
    109 }
    110 
    111 static const struct xt_handler_entry jabber_handlers[] = {
    112         { "stream:stream",      "<root>",               jabber_end_of_stream },
    113         { "iq",                 "stream:stream",        jabber_pkt_iq },
    114         { "message",            "stream:stream",        jabber_pkt_message },
    115         { "presence",           "stream:stream",        jabber_pkt_presence },
    116         { NULL,                 "stream:stream",        jabber_pkt_misc },
    117         { NULL,                 NULL,                   NULL }
    118 };
    119 
    120143#if 0
    121144int main( int argc, char *argv[] )
Note: See TracChangeset for help on using the changeset viewer.