diff options
Diffstat (limited to 'protocols/oscar/oscar.c')
-rw-r--r-- | protocols/oscar/oscar.c | 84 |
1 files changed, 39 insertions, 45 deletions
diff --git a/protocols/oscar/oscar.c b/protocols/oscar/oscar.c index 5dda3e90..76d61b13 100644 --- a/protocols/oscar/oscar.c +++ b/protocols/oscar/oscar.c @@ -274,53 +274,47 @@ static void oscar_callback(gpointer data, gint source, odata = (struct oscar_data *)gc->proto_data; if (condition & GAIM_INPUT_READ) { - if (conn->type == AIM_CONN_TYPE_RENDEZVOUS_OUT) { - if (aim_handlerendconnect(odata->sess, conn) < 0) { - aim_conn_kill(odata->sess, &conn); - } + if (aim_get_command(odata->sess, conn) >= 0) { + aim_rxdispatch(odata->sess); + if (odata->killme) + signoff(gc); } else { - if (aim_get_command(odata->sess, conn) >= 0) { - aim_rxdispatch(odata->sess); - if (odata->killme) - signoff(gc); - } else { - if ((conn->type == AIM_CONN_TYPE_BOS) || - !(aim_getconn_type(odata->sess, AIM_CONN_TYPE_BOS))) { - hide_login_progress_error(gc, _("Disconnected.")); - signoff(gc); - } else if (conn->type == AIM_CONN_TYPE_CHAT) { - struct chat_connection *c = find_oscar_chat_by_conn(gc, conn); - char buf[BUF_LONG]; - c->conn = NULL; - if (c->inpa > 0) - gaim_input_remove(c->inpa); - c->inpa = 0; - c->fd = -1; - aim_conn_kill(odata->sess, &conn); - sprintf(buf, _("You have been disconnected from chat room %s."), c->name); - do_error_dialog(sess->aux_data, buf, _("Chat Error!")); - } else if (conn->type == AIM_CONN_TYPE_CHATNAV) { - if (odata->cnpa > 0) - gaim_input_remove(odata->cnpa); - odata->cnpa = 0; - while (odata->create_rooms) { - struct create_room *cr = odata->create_rooms->data; - g_free(cr->name); - odata->create_rooms = - g_slist_remove(odata->create_rooms, cr); - g_free(cr); - do_error_dialog(sess->aux_data, _("Chat is currently unavailable"), - _("Gaim - Chat")); - } - aim_conn_kill(odata->sess, &conn); - } else if (conn->type == AIM_CONN_TYPE_AUTH) { - if (odata->paspa > 0) - gaim_input_remove(odata->paspa); - odata->paspa = 0; - aim_conn_kill(odata->sess, &conn); - } else { - aim_conn_kill(odata->sess, &conn); + if ((conn->type == AIM_CONN_TYPE_BOS) || + !(aim_getconn_type(odata->sess, AIM_CONN_TYPE_BOS))) { + hide_login_progress_error(gc, _("Disconnected.")); + signoff(gc); + } else if (conn->type == AIM_CONN_TYPE_CHAT) { + struct chat_connection *c = find_oscar_chat_by_conn(gc, conn); + char buf[BUF_LONG]; + c->conn = NULL; + if (c->inpa > 0) + gaim_input_remove(c->inpa); + c->inpa = 0; + c->fd = -1; + aim_conn_kill(odata->sess, &conn); + sprintf(buf, _("You have been disconnected from chat room %s."), c->name); + do_error_dialog(sess->aux_data, buf, _("Chat Error!")); + } else if (conn->type == AIM_CONN_TYPE_CHATNAV) { + if (odata->cnpa > 0) + gaim_input_remove(odata->cnpa); + odata->cnpa = 0; + while (odata->create_rooms) { + struct create_room *cr = odata->create_rooms->data; + g_free(cr->name); + odata->create_rooms = + g_slist_remove(odata->create_rooms, cr); + g_free(cr); + do_error_dialog(sess->aux_data, _("Chat is currently unavailable"), + _("Gaim - Chat")); } + aim_conn_kill(odata->sess, &conn); + } else if (conn->type == AIM_CONN_TYPE_AUTH) { + if (odata->paspa > 0) + gaim_input_remove(odata->paspa); + odata->paspa = 0; + aim_conn_kill(odata->sess, &conn); + } else { + aim_conn_kill(odata->sess, &conn); } } } |