Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • protocols/oscar/oscar.c

    r936ded6 r5b52a48  
    255255static int msgerrreasonlen = 25;
    256256
    257 static void oscar_callback(gpointer data, gint source,
    258                                 GaimInputCondition condition) {
     257static gboolean oscar_callback(gpointer data, gint source,
     258                                b_input_condition condition) {
    259259        aim_conn_t *conn = (aim_conn_t *)data;
    260260        aim_session_t *sess = aim_conn_getsess(conn);
     
    264264        if (!gc) {
    265265                /* gc is null. we return, else we seg SIGSEG on next line. */
    266                 return;
     266                return FALSE;
    267267        }
    268268     
     
    270270                /* oh boy. this is probably bad. i guess the only thing we
    271271                 * can really do is return? */
    272                 return;
     272                return FALSE;
    273273        }
    274274
     
    290290                                c->conn = NULL;
    291291                                if (c->inpa > 0)
    292                                         gaim_input_remove(c->inpa);
     292                                        b_event_remove(c->inpa);
    293293                                c->inpa = 0;
    294294                                c->fd = -1;
     
    298298                        } else if (conn->type == AIM_CONN_TYPE_CHATNAV) {
    299299                                if (odata->cnpa > 0)
    300                                         gaim_input_remove(odata->cnpa);
     300                                        b_event_remove(odata->cnpa);
    301301                                odata->cnpa = 0;
    302302                                while (odata->create_rooms) {
     
    312312                        } else if (conn->type == AIM_CONN_TYPE_AUTH) {
    313313                                if (odata->paspa > 0)
    314                                         gaim_input_remove(odata->paspa);
     314                                        b_event_remove(odata->paspa);
    315315                                odata->paspa = 0;
    316316                                aim_conn_kill(odata->sess, &conn);
     
    319319                        }
    320320                }
    321         }
    322 }
    323 
    324 static void oscar_login_connect(gpointer data, gint source, GaimInputCondition cond)
     321        } else {
     322                /* WTF??? */
     323                return FALSE;
     324        }
     325               
     326        return TRUE;
     327}
     328
     329static gboolean oscar_login_connect(gpointer data, gint source, b_input_condition cond)
    325330{
    326331        struct gaim_connection *gc = data;
     
    331336        if (!g_slist_find(get_connections(), gc)) {
    332337                closesocket(source);
    333                 return;
     338                return FALSE;
    334339        }
    335340
     
    341346                hide_login_progress(gc, _("Couldn't connect to host"));
    342347                signoff(gc);
    343                 return;
     348                return FALSE;
    344349        }
    345350
    346351        aim_conn_completeconnect(sess, conn);
    347         gc->inpa = gaim_input_add(conn->fd, GAIM_INPUT_READ,
     352        gc->inpa = b_input_add(conn->fd, GAIM_INPUT_READ,
    348353                        oscar_callback, conn);
    349 }
    350 
    351 static void oscar_login(struct aim_user *user) {
     354       
     355        return FALSE;
     356}
     357
     358static void oscar_acc_init(account_t *acc)
     359{
     360        set_t *s;
     361       
     362        s = set_add( &acc->set, "server", NULL, set_eval_account, acc );
     363        s->flags |= ACC_SET_NOSAVE | ACC_SET_OFFLINE_ONLY;
     364}
     365
     366static void oscar_login(account_t *acc) {
    352367        aim_session_t *sess;
    353368        aim_conn_t *conn;
    354369        char buf[256];
    355         struct gaim_connection *gc = new_gaim_conn(user);
     370        struct gaim_connection *gc = new_gaim_conn(acc);
    356371        struct oscar_data *odata = gc->proto_data = g_new0(struct oscar_data, 1);
    357372
    358         if (isdigit(*user->username)) {
     373        if (isdigit(acc->user[0])) {
    359374                odata->icq = TRUE;
    360375                /* This is odd but it's necessary for a proper do_import and do_export.
    361376                   We don't do those anymore, but let's stick with it, just in case
    362                    it accidentally fixes something else too... */
     377                   it accidentally fixes something else too... </bitlbee> */
    363378                gc->password[8] = 0;
    364379        } else {
     
    383398        }
    384399       
    385         if (g_strcasecmp(user->proto_opt[USEROPT_AUTH], "login.icq.com") != 0 &&
    386             g_strcasecmp(user->proto_opt[USEROPT_AUTH], "login.oscar.aol.com") != 0) {
    387                 serv_got_crap(gc, "Warning: Unknown OSCAR server: `%s'. Please review your configuration if the connection fails.",user->proto_opt[USEROPT_AUTH]);
     400        if (acc->server == NULL) {
     401                hide_login_progress(gc, "No servername specified");
     402                signoff(gc);
     403                return;
     404        }
     405       
     406        if (g_strcasecmp(acc->server, "login.icq.com") != 0 &&
     407            g_strcasecmp(acc->server, "login.oscar.aol.com") != 0) {
     408                serv_got_crap(gc, "Warning: Unknown OSCAR server: `%s'. Please review your configuration if the connection fails.",acc->server);
    388409        }
    389410       
     
    395416
    396417        conn->status |= AIM_CONN_STATUS_INPROGRESS;
    397         conn->fd = proxy_connect(user->proto_opt[USEROPT_AUTH][0] ?
    398                                         user->proto_opt[USEROPT_AUTH] : AIM_DEFAULT_LOGIN_SERVER,
    399                                  user->proto_opt[USEROPT_AUTHPORT][0] ?
    400                                         atoi(user->proto_opt[USEROPT_AUTHPORT]) : AIM_LOGIN_PORT,
    401                                  oscar_login_connect, gc);
     418        conn->fd = proxy_connect(acc->server, AIM_LOGIN_PORT, oscar_login_connect, gc);
    402419        if (conn->fd < 0) {
    403420                hide_login_progress(gc, _("Couldn't connect to host"));
     
    414431                struct chat_connection *n = odata->oscar_chats->data;
    415432                if (n->inpa > 0)
    416                         gaim_input_remove(n->inpa);
     433                        b_event_remove(n->inpa);
    417434                g_free(n->name);
    418435                g_free(n->show);
     
    433450                g_free(odata->oldp);
    434451        if (gc->inpa > 0)
    435                 gaim_input_remove(gc->inpa);
     452                b_event_remove(gc->inpa);
    436453        if (odata->cnpa > 0)
    437                 gaim_input_remove(odata->cnpa);
     454                b_event_remove(odata->cnpa);
    438455        if (odata->paspa > 0)
    439                 gaim_input_remove(odata->paspa);
     456                b_event_remove(odata->paspa);
    440457        aim_session_kill(odata->sess);
    441458        g_free(odata->sess);
     
    445462}
    446463
    447 static void oscar_bos_connect(gpointer data, gint source, GaimInputCondition cond) {
     464static gboolean oscar_bos_connect(gpointer data, gint source, b_input_condition cond) {
    448465        struct gaim_connection *gc = data;
    449466        struct oscar_data *odata;
     
    453470        if (!g_slist_find(get_connections(), gc)) {
    454471                closesocket(source);
    455                 return;
     472                return FALSE;
    456473        }
    457474
     
    463480                hide_login_progress(gc, _("Could Not Connect"));
    464481                signoff(gc);
    465                 return;
     482                return FALSE;
    466483        }
    467484
    468485        aim_conn_completeconnect(sess, bosconn);
    469         gc->inpa = gaim_input_add(bosconn->fd, GAIM_INPUT_READ,
     486        gc->inpa = b_input_add(bosconn->fd, GAIM_INPUT_READ,
    470487                        oscar_callback, bosconn);
    471488        set_login_progress(gc, 4, _("Connection established, cookie sent"));
     489       
     490        return FALSE;
    472491}
    473492
     
    476495        struct aim_authresp_info *info;
    477496        int i; char *host; int port;
    478         struct aim_user *user;
    479497        aim_conn_t *bosconn;
    480498
    481499        struct gaim_connection *gc = sess->aux_data;
    482500        struct oscar_data *od = gc->proto_data;
    483         user = gc->user;
    484         port = user->proto_opt[USEROPT_AUTHPORT][0] ?
    485                 atoi(user->proto_opt[USEROPT_AUTHPORT]) : AIM_LOGIN_PORT,
     501        port = AIM_LOGIN_PORT;
    486502
    487503        va_start(ap, fr);
     
    572588        }
    573589        aim_sendcookie(sess, bosconn, info->cookie);
    574         gaim_input_remove(gc->inpa);
     590        b_event_remove(gc->inpa);
    575591
    576592        return 1;
     
    587603};
    588604
    589 static void damn_you(gpointer data, gint source, GaimInputCondition c)
     605static gboolean damn_you(gpointer data, gint source, b_input_condition c)
    590606{
    591607        struct pieceofcrap *pos = data;
     
    607623                do_error_dialog(pos->gc, "Gaim was unable to get a valid hash for logging into AIM."
    608624                                " You may be disconnected shortly.", "Login Error");
    609                 gaim_input_remove(pos->inpa);
     625                b_event_remove(pos->inpa);
    610626                closesocket(pos->fd);
    611627                g_free(pos);
    612                 return;
     628                return FALSE;
    613629        }
    614630        /* [WvG] Wheeeee! Who needs error checking anyway? ;-) */
    615631        read(pos->fd, m, 16);
    616632        m[16] = '\0';
    617         gaim_input_remove(pos->inpa);
     633        b_event_remove(pos->inpa);
    618634        closesocket(pos->fd);
    619635        aim_sendmemblock(od->sess, pos->conn, 0, 16, m, AIM_SENDMEMBLOCK_FLAG_ISHASH);
    620636        g_free(pos);
    621 }
    622 
    623 static void straight_to_hell(gpointer data, gint source, GaimInputCondition cond) {
     637       
     638        return FALSE;
     639}
     640
     641static gboolean straight_to_hell(gpointer data, gint source, b_input_condition cond) {
    624642        struct pieceofcrap *pos = data;
    625643        char buf[BUF_LONG];
     
    631649                        g_free(pos->modname);
    632650                g_free(pos);
    633                 return;
     651                return FALSE;
    634652        }
    635653
     
    640658        if (pos->modname)
    641659                g_free(pos->modname);
    642         pos->inpa = gaim_input_add(pos->fd, GAIM_INPUT_READ, damn_you, pos);
    643         return;
     660        pos->inpa = b_input_add(pos->fd, GAIM_INPUT_READ, damn_you, pos);
     661        return FALSE;
    644662}
    645663
     
    763781}
    764782
    765 static void oscar_chatnav_connect(gpointer data, gint source, GaimInputCondition cond) {
     783static gboolean oscar_chatnav_connect(gpointer data, gint source, b_input_condition cond) {
    766784        struct gaim_connection *gc = data;
    767785        struct oscar_data *odata;
     
    771789        if (!g_slist_find(get_connections(), gc)) {
    772790                closesocket(source);
    773                 return;
     791                return FALSE;
    774792        }
    775793
     
    780798        if (source < 0) {
    781799                aim_conn_kill(sess, &tstconn);
    782                 return;
     800                return FALSE;
    783801        }
    784802
    785803        aim_conn_completeconnect(sess, tstconn);
    786         odata->cnpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ,
     804        odata->cnpa = b_input_add(tstconn->fd, GAIM_INPUT_READ,
    787805                                        oscar_callback, tstconn);
    788 }
    789 
    790 static void oscar_auth_connect(gpointer data, gint source, GaimInputCondition cond)
     806       
     807        return FALSE;
     808}
     809
     810static gboolean oscar_auth_connect(gpointer data, gint source, b_input_condition cond)
    791811{
    792812        struct gaim_connection *gc = data;
     
    797817        if (!g_slist_find(get_connections(), gc)) {
    798818                closesocket(source);
    799                 return;
     819                return FALSE;
    800820        }
    801821
     
    806826        if (source < 0) {
    807827                aim_conn_kill(sess, &tstconn);
    808                 return;
     828                return FALSE;
    809829        }
    810830
    811831        aim_conn_completeconnect(sess, tstconn);
    812         odata->paspa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ,
     832        odata->paspa = b_input_add(tstconn->fd, GAIM_INPUT_READ,
    813833                                oscar_callback, tstconn);
    814 }
    815 
    816 static void oscar_chat_connect(gpointer data, gint source, GaimInputCondition cond)
     834       
     835        return FALSE;
     836}
     837
     838static gboolean oscar_chat_connect(gpointer data, gint source, b_input_condition cond)
    817839{
    818840        struct chat_connection *ccon = data;
     
    827849                g_free(ccon->name);
    828850                g_free(ccon);
    829                 return;
     851                return FALSE;
    830852        }
    831853
     
    839861                g_free(ccon->name);
    840862                g_free(ccon);
    841                 return;
     863                return FALSE;
    842864        }
    843865
    844866        aim_conn_completeconnect(sess, ccon->conn);
    845         ccon->inpa = gaim_input_add(tstconn->fd,
     867        ccon->inpa = b_input_add(tstconn->fd,
    846868                        GAIM_INPUT_READ,
    847869                        oscar_callback, tstconn);
    848870        odata->oscar_chats = g_slist_append(odata->oscar_chats, ccon);
     871       
     872        return FALSE;
    849873}
    850874
     
    854878        struct aim_redirect_data *redir;
    855879        struct gaim_connection *gc = sess->aux_data;
    856         struct aim_user *user = gc->user;
    857880        aim_conn_t *tstconn;
    858881        int i;
     
    860883        int port;
    861884
    862         port = user->proto_opt[USEROPT_AUTHPORT][0] ?
    863                 atoi(user->proto_opt[USEROPT_AUTHPORT]) : AIM_LOGIN_PORT,
    864 
    865885        va_start(ap, fr);
    866886        redir = va_arg(ap, struct aim_redirect_data *);
    867887        va_end(ap);
    868888
     889        port = AIM_LOGIN_PORT;
    869890        for (i = 0; i < (int)strlen(redir->ip); i++) {
    870891                if (redir->ip[i] == ':') {
     
    17061727        odata->rights.maxsiglen = odata->rights.maxawaymsglen = (guint)maxsiglen;
    17071728
     1729        /* FIXME: It seems we're not really using this, and it broke now that
     1730           struct aim_user is dead.
    17081731        aim_bos_setprofile(sess, fr->conn, gc->user->user_info, NULL, gaim_caps);
    1709 
     1732        */
     1733       
    17101734        return 1;
    17111735}
     
    25652589        od->oscar_chats = g_slist_remove(od->oscar_chats, cc);
    25662590        if (cc->inpa > 0)
    2567                 gaim_input_remove(cc->inpa);
     2591                b_event_remove(cc->inpa);
    25682592        aim_conn_kill(od->sess, &cc->conn);
    25692593        g_free(cc->name);
     
    26392663        ret->away_states = oscar_away_states;
    26402664        ret->login = oscar_login;
     2665        ret->acc_init = oscar_acc_init;
    26412666        ret->close = oscar_close;
    26422667        ret->send_im = oscar_send_im;
     
    26562681        ret->set_permit_deny = oscar_set_permit_deny;
    26572682        ret->keepalive = oscar_keepalive;
    2658         ret->cmp_buddynames = aim_sncmp;
    26592683        ret->get_status_string = oscar_get_status_string;
    26602684        ret->send_typing = oscar_send_typing;
     2685       
     2686        ret->handle_cmp = aim_sncmp;
    26612687
    26622688        register_protocol(ret);
Note: See TracChangeset for help on using the changeset viewer.