- Timestamp:
- 2006-06-21T16:34:33Z (19 years ago)
- Branches:
- master
- Children:
- 59f5c42a
- Parents:
- 3af70b0 (diff), df417ca (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Location:
- protocols
- Files:
-
- 3 added
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
protocols/Makefile
r3af70b0 rb72caac 10 10 11 11 # [SH] Program variables 12 objects = http_client.o md5.o nogaim.o proxy.o sha.o $(SSL_CLIENT)12 objects = $(EVENT_HANDLER) http_client.o md5.o nogaim.o proxy.o sha.o $(SSL_CLIENT) 13 13 14 14 # [SH] The next two lines should contain the directory name (in $(subdirs)) -
protocols/http_client.c
r3af70b0 rb72caac 32 32 33 33 34 static void http_connected( gpointer data, int source, GaimInputCondition cond );35 static void http_ssl_connected( gpointer data, void *source, GaimInputCondition cond );36 static void http_incoming_data( gpointer data, int source, GaimInputCondition cond );34 static gboolean http_connected( gpointer data, int source, b_input_condition cond ); 35 static gboolean http_ssl_connected( gpointer data, void *source, b_input_condition cond ); 36 static gboolean http_incoming_data( gpointer data, int source, b_input_condition cond ); 37 37 38 38 … … 104 104 /* This one is actually pretty simple... Might get more calls if we can't write 105 105 the whole request at once. */ 106 static void http_connected( gpointer data, int source, GaimInputCondition cond )106 static gboolean http_connected( gpointer data, int source, b_input_condition cond ) 107 107 { 108 108 struct http_request *req = data; … … 113 113 114 114 if( req->inpa > 0 ) 115 gaim_input_remove( req->inpa );115 b_event_remove( req->inpa ); 116 116 117 117 sock_make_nonblocking( req->fd ); … … 148 148 149 149 if( req->bytes_written < req->request_length ) 150 req->inpa = gaim_input_add( source,151 152 153 else 154 req->inpa = gaim_input_add( source, GAIM_INPUT_READ, http_incoming_data, req );155 156 return ;150 req->inpa = b_input_add( source, 151 req->ssl ? ssl_getdirection( req->ssl ) : GAIM_INPUT_WRITE, 152 http_connected, req ); 153 else 154 req->inpa = b_input_add( source, GAIM_INPUT_READ, http_incoming_data, req ); 155 156 return FALSE; 157 157 158 158 error: … … 164 164 g_free( req ); 165 165 166 return ;166 return FALSE; 167 167 } 168 168 169 static void http_ssl_connected( gpointer data, void *source, GaimInputCondition cond )169 static gboolean http_ssl_connected( gpointer data, void *source, b_input_condition cond ) 170 170 { 171 171 struct http_request *req = data; … … 179 179 } 180 180 181 static void http_incoming_data( gpointer data, int source, GaimInputCondition cond )181 static gboolean http_incoming_data( gpointer data, int source, b_input_condition cond ) 182 182 { 183 183 struct http_request *req = data; … … 188 188 189 189 if( req->inpa > 0 ) 190 gaim_input_remove( req->inpa );190 b_event_remove( req->inpa ); 191 191 192 192 if( req->ssl ) … … 236 236 237 237 /* There will be more! */ 238 req->inpa = gaim_input_add( req->fd,239 240 241 242 return ;238 req->inpa = b_input_add( req->fd, 239 req->ssl ? ssl_getdirection( req->ssl ) : GAIM_INPUT_READ, 240 http_incoming_data, req ); 241 242 return FALSE; 243 243 244 244 got_reply: … … 430 430 req->reply_headers = req->reply_body = NULL; 431 431 432 return ;432 return FALSE; 433 433 } 434 434 … … 449 449 g_free( req->status_string ); 450 450 g_free( req ); 451 452 return FALSE; 451 453 } -
protocols/jabber/jabber.c
r3af70b0 rb72caac 471 471 } 472 472 473 static void jabber_callback(gpointer data, gint source, GaimInputCondition condition)473 static gboolean jabber_callback(gpointer data, gint source, b_input_condition condition) 474 474 { 475 475 struct gaim_connection *gc = (struct gaim_connection *)data; … … 477 477 478 478 gjab_recv(jd->gjc); 479 480 return TRUE; 479 481 } 480 482 … … 487 489 } 488 490 489 static void gjab_connected(gpointer data, gint source, GaimInputCondition cond)491 static gboolean gjab_connected(gpointer data, gint source, b_input_condition cond) 490 492 { 491 493 xmlnode x; … … 497 499 if (!g_slist_find(get_connections(), gc)) { 498 500 closesocket(source); 499 return ;501 return FALSE; 500 502 } 501 503 … … 508 510 if (source == -1) { 509 511 STATE_EVT(JCONN_STATE_OFF) 510 return ;512 return FALSE; 511 513 } 512 514 … … 530 532 531 533 gc = GJ_GC(gjc); 532 gc->inpa = gaim_input_add(gjc->fd, GAIM_INPUT_READ, jabber_callback, gc); 533 } 534 535 static void gjab_connected_ssl(gpointer data, void *source, GaimInputCondition cond) 534 gc->inpa = b_input_add(gjc->fd, GAIM_INPUT_READ, jabber_callback, gc); 535 536 return FALSE; 537 } 538 539 static gboolean gjab_connected_ssl(gpointer data, void *source, b_input_condition cond) 536 540 { 537 541 struct gaim_connection *gc = data; … … 544 548 if (source == NULL) { 545 549 STATE_EVT(JCONN_STATE_OFF) 546 return ;550 return FALSE; 547 551 } 548 552 549 553 if (!g_slist_find(get_connections(), gc)) { 550 554 ssl_disconnect(source); 551 return ;555 return FALSE; 552 556 } 553 557 554 gjab_connected(data, gjc->fd, cond);558 return gjab_connected(data, gjc->fd, cond); 555 559 } 556 560 … … 1543 1547 } 1544 1548 1545 static gboolean jabber_free(gpointer data )1549 static gboolean jabber_free(gpointer data, gint fd, b_input_condition cond) 1546 1550 { 1547 1551 struct jabber_data *jd = data; … … 1588 1592 } 1589 1593 if (gc->inpa) 1590 gaim_input_remove(gc->inpa);1594 b_event_remove(gc->inpa); 1591 1595 1592 1596 if(jd) { 1593 g_timeout_add(50, jabber_free, jd);1597 b_timeout_add(50, jabber_free, jd); 1594 1598 if(jd->gjc != NULL) 1595 1599 xmlnode_free(jd->gjc->current); -
protocols/msn/msn.h
r3af70b0 rb72caac 146 146 147 147 /* ns.c */ 148 void msn_ns_connected( gpointer data, gint source, GaimInputCondition cond );148 gboolean msn_ns_connected( gpointer data, gint source, b_input_condition cond ); 149 149 150 150 /* msn_util.c */ … … 173 173 void msn_sb_to_chat( struct msn_switchboard *sb ); 174 174 void msn_sb_destroy( struct msn_switchboard *sb ); 175 void msn_sb_connected( gpointer data, gint source, GaimInputCondition cond );175 gboolean msn_sb_connected( gpointer data, gint source, b_input_condition cond ); -
protocols/msn/ns.c
r3af70b0 rb72caac 30 30 #include "md5.h" 31 31 32 static void msn_ns_callback( gpointer data, gint source, GaimInputCondition cond );32 static gboolean msn_ns_callback( gpointer data, gint source, b_input_condition cond ); 33 33 static int msn_ns_command( gpointer data, char **cmd, int num_parts ); 34 34 static int msn_ns_message( gpointer data, char *msg, int msglen, char **cmd, int num_parts ); … … 36 36 static void msn_auth_got_passport_id( struct passport_reply *rep ); 37 37 38 void msn_ns_connected( gpointer data, gint source, GaimInputCondition cond )38 gboolean msn_ns_connected( gpointer data, gint source, b_input_condition cond ) 39 39 { 40 40 struct gaim_connection *gc = data; … … 43 43 44 44 if( !g_slist_find( msn_connections, gc ) ) 45 return ;45 return FALSE; 46 46 47 47 if( source == -1 ) … … 49 49 hide_login_progress( gc, "Could not connect to server" ); 50 50 signoff( gc ); 51 return ;51 return FALSE; 52 52 } 53 53 … … 75 75 if( msn_write( gc, s, strlen( s ) ) ) 76 76 { 77 gc->inpa = gaim_input_add( md->fd, GAIM_INPUT_READ, msn_ns_callback, gc );77 gc->inpa = b_input_add( md->fd, GAIM_INPUT_READ, msn_ns_callback, gc ); 78 78 set_login_progress( gc, 1, "Connected to server, waiting for reply" ); 79 79 } 80 81 return FALSE; 80 82 } 81 83 82 void msn_ns_callback( gpointer data, gint source, GaimInputCondition cond )84 static gboolean msn_ns_callback( gpointer data, gint source, b_input_condition cond ) 83 85 { 84 86 struct gaim_connection *gc = data; … … 89 91 hide_login_progress( gc, "Error while reading from server" ); 90 92 signoff( gc ); 91 } 93 94 return FALSE; 95 } 96 else 97 return TRUE; 92 98 } 93 99 … … 130 136 if( num_parts == 6 && strcmp( cmd[2], "NS" ) == 0 ) 131 137 { 132 gaim_input_remove( gc->inpa );138 b_event_remove( gc->inpa ); 133 139 gc->inpa = 0; 134 140 closesocket( md->fd ); -
protocols/msn/sb.c
r3af70b0 rb72caac 30 30 #include "md5.h" 31 31 32 static void msn_sb_callback( gpointer data, gint source, GaimInputCondition cond );32 static gboolean msn_sb_callback( gpointer data, gint source, b_input_condition cond ); 33 33 static int msn_sb_command( gpointer data, char **cmd, int num_parts ); 34 34 static int msn_sb_message( gpointer data, char *msg, int msglen, char **cmd, int num_parts ); … … 237 237 } 238 238 239 if( sb->inp ) gaim_input_remove( sb->inp );239 if( sb->inp ) b_event_remove( sb->inp ); 240 240 closesocket( sb->fd ); 241 241 … … 245 245 } 246 246 247 void msn_sb_connected( gpointer data, gint source, GaimInputCondition cond )247 gboolean msn_sb_connected( gpointer data, gint source, b_input_condition cond ) 248 248 { 249 249 struct msn_switchboard *sb = data; … … 254 254 /* Are we still alive? */ 255 255 if( !g_slist_find( msn_switchboards, sb ) ) 256 return ;256 return FALSE; 257 257 258 258 gc = sb->gc; … … 263 263 debug( "ERROR %d while connecting to switchboard server", 1 ); 264 264 msn_sb_destroy( sb ); 265 return ;265 return FALSE; 266 266 } 267 267 … … 280 280 281 281 if( msn_sb_write( sb, buf, strlen( buf ) ) ) 282 sb->inp = gaim_input_add( sb->fd, GAIM_INPUT_READ, msn_sb_callback, sb );282 sb->inp = b_input_add( sb->fd, GAIM_INPUT_READ, msn_sb_callback, sb ); 283 283 else 284 284 debug( "ERROR %d while connecting to switchboard server", 2 ); 285 } 286 287 static void msn_sb_callback( gpointer data, gint source, GaimInputCondition cond ) 285 286 return FALSE; 287 } 288 289 static gboolean msn_sb_callback( gpointer data, gint source, b_input_condition cond ) 288 290 { 289 291 struct msn_switchboard *sb = data; … … 293 295 debug( "ERROR: Switchboard died" ); 294 296 msn_sb_destroy( sb ); 295 } 297 298 return FALSE; 299 } 300 else 301 return TRUE; 296 302 } 297 303 -
protocols/nogaim.c
r3af70b0 rb72caac 2 2 * BitlBee -- An IRC to other IM-networks gateway * 3 3 * * 4 * Copyright 2002-200 4Wilmer van der Gaast and others *4 * Copyright 2002-2006 Wilmer van der Gaast and others * 5 5 \********************************************************************/ 6 6 … … 13 13 * from scratch for BitlBee and doesn't contain any code from Gaim anymore 14 14 * (except for the function names). 15 *16 * Copyright 2002-2006 Wilmer van der Gaast <wilmer@gaast.net> and others17 15 */ 18 16 … … 160 158 * This fixes daemon mode breakage where IRC doesn't point to the currently active connection. 161 159 */ 162 gc->irc =user->irc;160 gc->irc = user->irc; 163 161 164 162 connections = g_slist_append( connections, gc ); … … 240 238 } 241 239 242 static gboolean send_keepalive( gpointer d )240 static gboolean send_keepalive( gpointer d, gint fd, b_input_condition cond ) 243 241 { 244 242 struct gaim_connection *gc = d; … … 264 262 serv_got_crap( gc, "Logged in" ); 265 263 266 gc->keepalive = g_timeout_add( 60000, send_keepalive, gc );264 gc->keepalive = b_timeout_add( 60000, send_keepalive, gc ); 267 265 gc->flags |= OPT_LOGGED_IN; 268 266 … … 272 270 } 273 271 274 gboolean auto_reconnect( gpointer data )272 gboolean auto_reconnect( gpointer data, gint fd, b_input_condition cond ) 275 273 { 276 274 account_t *a = data; … … 284 282 void cancel_auto_reconnect( account_t *a ) 285 283 { 286 while( g_source_remove_by_user_data( (gpointer) a ) ); 284 /* while( b_event_remove_by_data( (gpointer) a ) ); */ 285 b_event_remove( a->reconnect ); 287 286 a->reconnect = 0; 288 287 } … … 295 294 296 295 serv_got_crap( gc, "Signing off.." ); 296 297 b_event_remove( gc->keepalive ); 297 298 gc->flags |= OPT_LOGGING_OUT; 298 299 gaim_input_remove( gc->keepalive );300 299 gc->keepalive = 0; 301 300 gc->prpl->close( gc ); 302 gaim_input_remove( gc->inpa );301 b_event_remove( gc->inpa ); 303 302 304 303 while( u ) … … 327 326 { 328 327 int delay = set_getint( irc, "auto_reconnect_delay" ); 328 329 329 serv_got_crap( gc, "Reconnecting in %d seconds..", delay ); 330 331 a->reconnect = 1; 332 g_timeout_add( delay * 1000, auto_reconnect, a ); 330 a->reconnect = b_timeout_add( delay * 1000, auto_reconnect, a ); 333 331 } 334 332 -
protocols/nogaim.h
r3af70b0 rb72caac 208 208 char *set_eval_away_devoice( irc_t *irc, set_t *set, char *value ); 209 209 210 gboolean auto_reconnect( gpointer data );210 gboolean auto_reconnect( gpointer data, gint fd, b_input_condition cond ); 211 211 void cancel_auto_reconnect( struct account *a ); 212 212 -
protocols/oscar/oscar.c
r3af70b0 rb72caac 255 255 static int msgerrreasonlen = 25; 256 256 257 static voidoscar_callback(gpointer data, gint source,258 GaimInputCondition condition) {257 static gboolean oscar_callback(gpointer data, gint source, 258 b_input_condition condition) { 259 259 aim_conn_t *conn = (aim_conn_t *)data; 260 260 aim_session_t *sess = aim_conn_getsess(conn); … … 264 264 if (!gc) { 265 265 /* gc is null. we return, else we seg SIGSEG on next line. */ 266 return ;266 return FALSE; 267 267 } 268 268 … … 270 270 /* oh boy. this is probably bad. i guess the only thing we 271 271 * can really do is return? */ 272 return ;272 return FALSE; 273 273 } 274 274 … … 290 290 c->conn = NULL; 291 291 if (c->inpa > 0) 292 gaim_input_remove(c->inpa);292 b_event_remove(c->inpa); 293 293 c->inpa = 0; 294 294 c->fd = -1; … … 298 298 } else if (conn->type == AIM_CONN_TYPE_CHATNAV) { 299 299 if (odata->cnpa > 0) 300 gaim_input_remove(odata->cnpa);300 b_event_remove(odata->cnpa); 301 301 odata->cnpa = 0; 302 302 while (odata->create_rooms) { … … 312 312 } else if (conn->type == AIM_CONN_TYPE_AUTH) { 313 313 if (odata->paspa > 0) 314 gaim_input_remove(odata->paspa);314 b_event_remove(odata->paspa); 315 315 odata->paspa = 0; 316 316 aim_conn_kill(odata->sess, &conn); … … 319 319 } 320 320 } 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 329 static gboolean oscar_login_connect(gpointer data, gint source, b_input_condition cond) 325 330 { 326 331 struct gaim_connection *gc = data; … … 331 336 if (!g_slist_find(get_connections(), gc)) { 332 337 closesocket(source); 333 return ;338 return FALSE; 334 339 } 335 340 … … 341 346 hide_login_progress(gc, _("Couldn't connect to host")); 342 347 signoff(gc); 343 return ;348 return FALSE; 344 349 } 345 350 346 351 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, 348 353 oscar_callback, conn); 354 355 return FALSE; 349 356 } 350 357 … … 414 421 struct chat_connection *n = odata->oscar_chats->data; 415 422 if (n->inpa > 0) 416 gaim_input_remove(n->inpa);423 b_event_remove(n->inpa); 417 424 g_free(n->name); 418 425 g_free(n->show); … … 433 440 g_free(odata->oldp); 434 441 if (gc->inpa > 0) 435 gaim_input_remove(gc->inpa);442 b_event_remove(gc->inpa); 436 443 if (odata->cnpa > 0) 437 gaim_input_remove(odata->cnpa);444 b_event_remove(odata->cnpa); 438 445 if (odata->paspa > 0) 439 gaim_input_remove(odata->paspa);446 b_event_remove(odata->paspa); 440 447 aim_session_kill(odata->sess); 441 448 g_free(odata->sess); … … 445 452 } 446 453 447 static void oscar_bos_connect(gpointer data, gint source, GaimInputCondition cond) {454 static gboolean oscar_bos_connect(gpointer data, gint source, b_input_condition cond) { 448 455 struct gaim_connection *gc = data; 449 456 struct oscar_data *odata; … … 453 460 if (!g_slist_find(get_connections(), gc)) { 454 461 closesocket(source); 455 return ;462 return FALSE; 456 463 } 457 464 … … 463 470 hide_login_progress(gc, _("Could Not Connect")); 464 471 signoff(gc); 465 return ;472 return FALSE; 466 473 } 467 474 468 475 aim_conn_completeconnect(sess, bosconn); 469 gc->inpa = gaim_input_add(bosconn->fd, GAIM_INPUT_READ,476 gc->inpa = b_input_add(bosconn->fd, GAIM_INPUT_READ, 470 477 oscar_callback, bosconn); 471 478 set_login_progress(gc, 4, _("Connection established, cookie sent")); 479 480 return FALSE; 472 481 } 473 482 … … 572 581 } 573 582 aim_sendcookie(sess, bosconn, info->cookie); 574 gaim_input_remove(gc->inpa);583 b_event_remove(gc->inpa); 575 584 576 585 return 1; … … 587 596 }; 588 597 589 static void damn_you(gpointer data, gint source, GaimInputCondition c)598 static gboolean damn_you(gpointer data, gint source, b_input_condition c) 590 599 { 591 600 struct pieceofcrap *pos = data; … … 607 616 do_error_dialog(pos->gc, "Gaim was unable to get a valid hash for logging into AIM." 608 617 " You may be disconnected shortly.", "Login Error"); 609 gaim_input_remove(pos->inpa);618 b_event_remove(pos->inpa); 610 619 closesocket(pos->fd); 611 620 g_free(pos); 612 return ;621 return FALSE; 613 622 } 614 623 /* [WvG] Wheeeee! Who needs error checking anyway? ;-) */ 615 624 read(pos->fd, m, 16); 616 625 m[16] = '\0'; 617 gaim_input_remove(pos->inpa);626 b_event_remove(pos->inpa); 618 627 closesocket(pos->fd); 619 628 aim_sendmemblock(od->sess, pos->conn, 0, 16, m, AIM_SENDMEMBLOCK_FLAG_ISHASH); 620 629 g_free(pos); 621 } 622 623 static void straight_to_hell(gpointer data, gint source, GaimInputCondition cond) { 630 631 return FALSE; 632 } 633 634 static gboolean straight_to_hell(gpointer data, gint source, b_input_condition cond) { 624 635 struct pieceofcrap *pos = data; 625 636 char buf[BUF_LONG]; … … 631 642 g_free(pos->modname); 632 643 g_free(pos); 633 return ;644 return FALSE; 634 645 } 635 646 … … 640 651 if (pos->modname) 641 652 g_free(pos->modname); 642 pos->inpa = gaim_input_add(pos->fd, GAIM_INPUT_READ, damn_you, pos);643 return ;653 pos->inpa = b_input_add(pos->fd, GAIM_INPUT_READ, damn_you, pos); 654 return FALSE; 644 655 } 645 656 … … 763 774 } 764 775 765 static void oscar_chatnav_connect(gpointer data, gint source, GaimInputCondition cond) {776 static gboolean oscar_chatnav_connect(gpointer data, gint source, b_input_condition cond) { 766 777 struct gaim_connection *gc = data; 767 778 struct oscar_data *odata; … … 771 782 if (!g_slist_find(get_connections(), gc)) { 772 783 closesocket(source); 773 return ;784 return FALSE; 774 785 } 775 786 … … 780 791 if (source < 0) { 781 792 aim_conn_kill(sess, &tstconn); 782 return ;793 return FALSE; 783 794 } 784 795 785 796 aim_conn_completeconnect(sess, tstconn); 786 odata->cnpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ,797 odata->cnpa = b_input_add(tstconn->fd, GAIM_INPUT_READ, 787 798 oscar_callback, tstconn); 788 } 789 790 static void oscar_auth_connect(gpointer data, gint source, GaimInputCondition cond) 799 800 return FALSE; 801 } 802 803 static gboolean oscar_auth_connect(gpointer data, gint source, b_input_condition cond) 791 804 { 792 805 struct gaim_connection *gc = data; … … 797 810 if (!g_slist_find(get_connections(), gc)) { 798 811 closesocket(source); 799 return ;812 return FALSE; 800 813 } 801 814 … … 806 819 if (source < 0) { 807 820 aim_conn_kill(sess, &tstconn); 808 return ;821 return FALSE; 809 822 } 810 823 811 824 aim_conn_completeconnect(sess, tstconn); 812 odata->paspa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ,825 odata->paspa = b_input_add(tstconn->fd, GAIM_INPUT_READ, 813 826 oscar_callback, tstconn); 814 } 815 816 static void oscar_chat_connect(gpointer data, gint source, GaimInputCondition cond) 827 828 return FALSE; 829 } 830 831 static gboolean oscar_chat_connect(gpointer data, gint source, b_input_condition cond) 817 832 { 818 833 struct chat_connection *ccon = data; … … 827 842 g_free(ccon->name); 828 843 g_free(ccon); 829 return ;844 return FALSE; 830 845 } 831 846 … … 839 854 g_free(ccon->name); 840 855 g_free(ccon); 841 return ;856 return FALSE; 842 857 } 843 858 844 859 aim_conn_completeconnect(sess, ccon->conn); 845 ccon->inpa = gaim_input_add(tstconn->fd,860 ccon->inpa = b_input_add(tstconn->fd, 846 861 GAIM_INPUT_READ, 847 862 oscar_callback, tstconn); 848 863 odata->oscar_chats = g_slist_append(odata->oscar_chats, ccon); 864 865 return FALSE; 849 866 } 850 867 … … 2565 2582 od->oscar_chats = g_slist_remove(od->oscar_chats, cc); 2566 2583 if (cc->inpa > 0) 2567 gaim_input_remove(cc->inpa);2584 b_event_remove(cc->inpa); 2568 2585 aim_conn_kill(od->sess, &cc->conn); 2569 2586 g_free(cc->name); -
protocols/proxy.c
r3af70b0 rb72caac 21 21 */ 22 22 23 /* this is a little piece of code to handle proxy connection */24 /* it is intended to : 1st handle http proxy, using the CONNECT command25 , 2nd provide an easy way to add socks support */26 27 23 #define BITLBEE_CORE 28 24 #include <stdio.h> … … 46 42 #include "proxy.h" 47 43 48 #define GAIM_READ_COND (G_IO_IN | G_IO_HUP | G_IO_ERR)49 #define GAIM_WRITE_COND (G_IO_OUT | G_IO_HUP | G_IO_ERR | G_IO_NVAL)50 #define GAIM_ERR_COND (G_IO_HUP | G_IO_ERR | G_IO_NVAL)51 52 44 char proxyhost[128] = ""; 53 45 int proxyport = 0; … … 57 49 58 50 struct PHB { 59 GaimInputFunctionfunc, proxy_func;51 b_event_handler func, proxy_func; 60 52 gpointer data, proxy_data; 61 53 char *host; … … 64 56 gint inpa; 65 57 }; 66 67 typedef struct _GaimIOClosure {68 GaimInputFunction function;69 guint result;70 gpointer data;71 } GaimIOClosure;72 58 73 59 … … 92 78 } 93 79 94 static void gaim_io_destroy(gpointer data) 95 { 96 g_free(data); 97 } 98 99 static gboolean gaim_io_invoke(GIOChannel *source, GIOCondition condition, gpointer data) 100 { 101 GaimIOClosure *closure = data; 102 GaimInputCondition gaim_cond = 0; 103 104 if (condition & GAIM_READ_COND) 105 gaim_cond |= GAIM_INPUT_READ; 106 if (condition & GAIM_WRITE_COND) 107 gaim_cond |= GAIM_INPUT_WRITE; 108 109 closure->function(closure->data, g_io_channel_unix_get_fd(source), gaim_cond); 110 111 return TRUE; 112 } 113 114 static void gaim_io_connected(gpointer data, gint source, GaimInputCondition cond) 80 static gboolean gaim_io_connected(gpointer data, gint source, b_input_condition cond) 115 81 { 116 82 struct PHB *phb = data; … … 122 88 if (getsockopt(source, SOL_SOCKET, SO_ERROR, &error, &len) < 0) { 123 89 closesocket(source); 124 gaim_input_remove(phb->inpa);90 b_event_remove(phb->inpa); 125 91 if( phb->proxy_func ) 126 92 phb->proxy_func(phb->proxy_data, -1, GAIM_INPUT_READ); … … 129 95 g_free(phb); 130 96 } 131 return ;97 return FALSE; 132 98 } 133 99 #endif 134 100 sock_make_blocking(source); 135 gaim_input_remove(phb->inpa);101 b_event_remove(phb->inpa); 136 102 if( phb->proxy_func ) 137 103 phb->proxy_func(phb->proxy_data, source, GAIM_INPUT_READ); … … 140 106 g_free(phb); 141 107 } 108 109 return FALSE; 142 110 } 143 111 … … 158 126 159 127 sock_make_nonblocking(fd); 160 128 129 event_debug("proxy_connect_none( \"%s\", %d ) = %d\n", host, port, fd); 130 161 131 if (connect(fd, (struct sockaddr *)sin, sizeof(*sin)) < 0) { 162 132 if (sockerr_again()) { 163 phb->inpa = gaim_input_add(fd, GAIM_INPUT_WRITE, gaim_io_connected, phb);133 phb->inpa = b_input_add(fd, GAIM_INPUT_WRITE, gaim_io_connected, phb); 164 134 phb->fd = fd; 165 135 } else { … … 179 149 #define HTTP_GOODSTRING2 "HTTP/1.1 200 Connection established" 180 150 181 static void http_canread(gpointer data, gint source, GaimInputCondition cond)151 static gboolean http_canread(gpointer data, gint source, b_input_condition cond) 182 152 { 183 153 int nlc = 0; … … 186 156 char inputline[8192]; 187 157 188 gaim_input_remove(phb->inpa);158 b_event_remove(phb->inpa); 189 159 190 160 while ((pos < sizeof(inputline)-1) && (nlc != 2) && (read(source, &inputline[pos++], 1) == 1)) { … … 201 171 g_free(phb->host); 202 172 g_free(phb); 203 return ;173 return FALSE; 204 174 } 205 175 … … 208 178 g_free(phb->host); 209 179 g_free(phb); 210 return; 211 } 212 213 static void http_canwrite(gpointer data, gint source, GaimInputCondition cond) 180 181 return FALSE; 182 } 183 184 static gboolean http_canwrite(gpointer data, gint source, b_input_condition cond) 214 185 { 215 186 char cmd[384]; … … 218 189 int error = ETIMEDOUT; 219 190 if (phb->inpa > 0) 220 gaim_input_remove(phb->inpa);191 b_event_remove(phb->inpa); 221 192 len = sizeof(error); 222 193 if (getsockopt(source, SOL_SOCKET, SO_ERROR, &error, &len) < 0) { … … 225 196 g_free(phb->host); 226 197 g_free(phb); 227 return ;198 return FALSE; 228 199 } 229 200 sock_make_blocking(source); … … 236 207 g_free(phb->host); 237 208 g_free(phb); 238 return ;209 return FALSE; 239 210 } 240 211 … … 251 222 g_free(phb->host); 252 223 g_free(phb); 253 return ;224 return FALSE; 254 225 } 255 226 } … … 261 232 g_free(phb->host); 262 233 g_free(phb); 263 return; 264 } 265 266 phb->inpa = gaim_input_add(source, GAIM_INPUT_READ, http_canread, phb); 234 return FALSE; 235 } 236 237 phb->inpa = b_input_add(source, GAIM_INPUT_READ, http_canread, phb); 238 239 return FALSE; 267 240 } 268 241 … … 280 253 /* Connecting to SOCKS4 proxies */ 281 254 282 static void s4_canread(gpointer data, gint source, GaimInputCondition cond)255 static gboolean s4_canread(gpointer data, gint source, b_input_condition cond) 283 256 { 284 257 unsigned char packet[12]; 285 258 struct PHB *phb = data; 286 259 287 gaim_input_remove(phb->inpa);260 b_event_remove(phb->inpa); 288 261 289 262 memset(packet, 0, sizeof(packet)); … … 292 265 g_free(phb->host); 293 266 g_free(phb); 294 return ;267 return FALSE; 295 268 } 296 269 … … 299 272 g_free(phb->host); 300 273 g_free(phb); 301 } 302 303 static void s4_canwrite(gpointer data, gint source, GaimInputCondition cond) 274 275 return FALSE; 276 } 277 278 static gboolean s4_canwrite(gpointer data, gint source, b_input_condition cond) 304 279 { 305 280 unsigned char packet[12]; … … 309 284 int error = ETIMEDOUT; 310 285 if (phb->inpa > 0) 311 gaim_input_remove(phb->inpa);286 b_event_remove(phb->inpa); 312 287 len = sizeof(error); 313 288 if (getsockopt(source, SOL_SOCKET, SO_ERROR, &error, &len) < 0) { … … 316 291 g_free(phb->host); 317 292 g_free(phb); 318 return ;293 return FALSE; 319 294 } 320 295 sock_make_blocking(source); … … 326 301 g_free(phb->host); 327 302 g_free(phb); 328 return ;303 return FALSE; 329 304 } 330 305 … … 343 318 g_free(phb->host); 344 319 g_free(phb); 345 return; 346 } 347 348 phb->inpa = gaim_input_add(source, GAIM_INPUT_READ, s4_canread, phb); 320 return FALSE; 321 } 322 323 phb->inpa = b_input_add(source, GAIM_INPUT_READ, s4_canread, phb); 324 325 return FALSE; 349 326 } 350 327 … … 362 339 /* Connecting to SOCKS5 proxies */ 363 340 364 static void s5_canread_again(gpointer data, gint source, GaimInputCondition cond)341 static gboolean s5_canread_again(gpointer data, gint source, b_input_condition cond) 365 342 { 366 343 unsigned char buf[512]; 367 344 struct PHB *phb = data; 368 345 369 gaim_input_remove(phb->inpa);346 b_event_remove(phb->inpa); 370 347 371 348 if (read(source, buf, 10) < 10) { … … 374 351 g_free(phb->host); 375 352 g_free(phb); 376 return ;353 return FALSE; 377 354 } 378 355 if ((buf[0] != 0x05) || (buf[1] != 0x00)) { … … 381 358 g_free(phb->host); 382 359 g_free(phb); 383 return ;360 return FALSE; 384 361 } 385 362 … … 387 364 g_free(phb->host); 388 365 g_free(phb); 389 return; 366 367 return FALSE; 390 368 } 391 369 … … 395 373 struct PHB *phb = data; 396 374 int hlen = strlen(phb->host); 397 375 398 376 buf[0] = 0x05; 399 377 buf[1] = 0x01; /* CONNECT */ … … 413 391 } 414 392 415 phb->inpa = gaim_input_add(source, GAIM_INPUT_READ, s5_canread_again, phb);416 } 417 418 static void s5_readauth(gpointer data, gint source, GaimInputCondition cond)393 phb->inpa = b_input_add(source, GAIM_INPUT_READ, s5_canread_again, phb); 394 } 395 396 static gboolean s5_readauth(gpointer data, gint source, b_input_condition cond) 419 397 { 420 398 unsigned char buf[512]; 421 399 struct PHB *phb = data; 422 400 423 gaim_input_remove(phb->inpa);401 b_event_remove(phb->inpa); 424 402 425 403 if (read(source, buf, 2) < 2) { … … 428 406 g_free(phb->host); 429 407 g_free(phb); 430 return ;408 return FALSE; 431 409 } 432 410 … … 436 414 g_free(phb->host); 437 415 g_free(phb); 438 return ;416 return FALSE; 439 417 } 440 418 441 419 s5_sendconnect(phb, source); 442 } 443 444 static void s5_canread(gpointer data, gint source, GaimInputCondition cond) 420 421 return FALSE; 422 } 423 424 static gboolean s5_canread(gpointer data, gint source, b_input_condition cond) 445 425 { 446 426 unsigned char buf[512]; 447 427 struct PHB *phb = data; 448 428 449 gaim_input_remove(phb->inpa);429 b_event_remove(phb->inpa); 450 430 451 431 if (read(source, buf, 2) < 2) { … … 454 434 g_free(phb->host); 455 435 g_free(phb); 456 return ;436 return FALSE; 457 437 } 458 438 … … 462 442 g_free(phb->host); 463 443 g_free(phb); 464 return ;444 return FALSE; 465 445 } 466 446 … … 477 457 g_free(phb->host); 478 458 g_free(phb); 479 return ;459 return FALSE; 480 460 } 481 461 482 phb->inpa = gaim_input_add(source, GAIM_INPUT_READ, s5_readauth, phb);462 phb->inpa = b_input_add(source, GAIM_INPUT_READ, s5_readauth, phb); 483 463 } else { 484 464 s5_sendconnect(phb, source); 485 465 } 486 } 487 488 static void s5_canwrite(gpointer data, gint source, GaimInputCondition cond) 466 467 return FALSE; 468 } 469 470 static gboolean s5_canwrite(gpointer data, gint source, b_input_condition cond) 489 471 { 490 472 unsigned char buf[512]; … … 494 476 int error = ETIMEDOUT; 495 477 if (phb->inpa > 0) 496 gaim_input_remove(phb->inpa);478 b_event_remove(phb->inpa); 497 479 len = sizeof(error); 498 480 if (getsockopt(source, SOL_SOCKET, SO_ERROR, &error, &len) < 0) { … … 501 483 g_free(phb->host); 502 484 g_free(phb); 503 return ;485 return FALSE; 504 486 } 505 487 sock_make_blocking(source); … … 523 505 g_free(phb->host); 524 506 g_free(phb); 525 return; 526 } 527 528 phb->inpa = gaim_input_add(source, GAIM_INPUT_READ, s5_canread, phb); 507 return FALSE; 508 } 509 510 phb->inpa = b_input_add(source, GAIM_INPUT_READ, s5_canread, phb); 511 512 return FALSE; 529 513 } 530 514 … … 542 526 /* Export functions */ 543 527 544 gint gaim_input_add(gint source, GaimInputCondition condition, GaimInputFunction function, gpointer data) 545 { 546 GaimIOClosure *closure = g_new0(GaimIOClosure, 1); 547 GIOChannel *channel; 548 GIOCondition cond = 0; 549 550 closure->function = function; 551 closure->data = data; 552 553 if (condition & GAIM_INPUT_READ) 554 cond |= GAIM_READ_COND; 555 if (condition & GAIM_INPUT_WRITE) 556 cond |= GAIM_WRITE_COND; 557 558 channel = g_io_channel_unix_new(source); 559 closure->result = g_io_add_watch_full(channel, G_PRIORITY_DEFAULT, cond, 560 gaim_io_invoke, closure, gaim_io_destroy); 561 562 g_io_channel_unref(channel); 563 return closure->result; 564 } 565 566 void gaim_input_remove(gint tag) 567 { 568 if (tag > 0) 569 g_source_remove(tag); 570 } 571 572 int proxy_connect(const char *host, int port, GaimInputFunction func, gpointer data) 528 int proxy_connect(const char *host, int port, b_event_handler func, gpointer data) 573 529 { 574 530 struct PHB *phb; -
protocols/proxy.h
r3af70b0 rb72caac 1 1 /* 2 * gaim2 * nogaim 3 3 * 4 4 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> … … 36 36 #include <gmodule.h> 37 37 38 #include "events.h" 39 38 40 #define PROXY_NONE 0 39 41 #define PROXY_HTTP 1 … … 47 49 extern char proxypass[128]; 48 50 49 typedef enum { 50 GAIM_INPUT_READ = 1 << 0, 51 GAIM_INPUT_WRITE = 1 << 1 52 } GaimInputCondition; 53 typedef void (*GaimInputFunction)(gpointer, gint, GaimInputCondition); 54 55 G_MODULE_EXPORT gint gaim_input_add(int, GaimInputCondition, GaimInputFunction, gpointer); 56 G_MODULE_EXPORT void gaim_input_remove(gint); 57 58 G_MODULE_EXPORT int proxy_connect(const char *host, int port, GaimInputFunction func, gpointer data); 51 G_MODULE_EXPORT int proxy_connect(const char *host, int port, b_event_handler func, gpointer data); 59 52 60 53 #endif /* _PROXY_H_ */ -
protocols/ssl_bogus.c
r3af70b0 rb72caac 52 52 } 53 53 54 GaimInputCondition ssl_getdirection( void *conn )54 b_input_condition ssl_getdirection( void *conn ) 55 55 { 56 56 return GAIM_INPUT_READ; -
protocols/ssl_client.h
r3af70b0 rb72caac 33 33 extern int ssl_errno; 34 34 35 typedef void (*ssl_input_function)(gpointer, void*, GaimInputCondition);35 typedef gboolean (*ssl_input_function)(gpointer, void*, b_input_condition); 36 36 37 37 G_MODULE_EXPORT void *ssl_connect( char *host, int port, ssl_input_function func, gpointer data ); … … 40 40 G_MODULE_EXPORT void ssl_disconnect( void *conn_ ); 41 41 G_MODULE_EXPORT int ssl_getfd( void *conn ); 42 G_MODULE_EXPORT GaimInputCondition ssl_getdirection( void *conn );42 G_MODULE_EXPORT b_input_condition ssl_getdirection( void *conn ); -
protocols/ssl_gnutls.c
r3af70b0 rb72caac 48 48 }; 49 49 50 static void ssl_connected( gpointer data, gint source, GaimInputCondition cond );50 static gboolean ssl_connected( gpointer data, gint source, b_input_condition cond ); 51 51 52 52 … … 81 81 } 82 82 83 static void ssl_handshake( gpointer data, gint source, GaimInputCondition cond );84 85 static void ssl_connected( gpointer data, gint source, GaimInputCondition cond )83 static gboolean ssl_handshake( gpointer data, gint source, b_input_condition cond ); 84 85 static gboolean ssl_connected( gpointer data, gint source, b_input_condition cond ) 86 86 { 87 87 struct scd *conn = data; … … 96 96 g_free( conn ); 97 97 98 return ;98 return FALSE; 99 99 } 100 100 … … 102 102 gnutls_transport_set_ptr( conn->session, (gnutls_transport_ptr) conn->fd ); 103 103 104 ssl_handshake( data, source, cond );105 } 106 107 static void ssl_handshake( gpointer data, gint source, GaimInputCondition cond )104 return ssl_handshake( data, source, cond ); 105 } 106 107 static gboolean ssl_handshake( gpointer data, gint source, b_input_condition cond ) 108 108 { 109 109 struct scd *conn = data; 110 110 int st; 111 111 112 if( conn->inpa != -1 )113 {114 gaim_input_remove( conn->inpa );115 conn->inpa = -1;116 }117 118 112 if( ( st = gnutls_handshake( conn->session ) ) < 0 ) 119 113 { 120 114 if( st == GNUTLS_E_AGAIN || st == GNUTLS_E_INTERRUPTED ) 121 115 { 122 conn->inpa = gaim_input_add( conn->fd, ssl_getdirection( conn ),123 116 conn->inpa = b_input_add( conn->fd, ssl_getdirection( conn ), 117 ssl_handshake, data ); 124 118 } 125 119 else … … 142 136 conn->func( conn->data, conn, cond ); 143 137 } 138 139 return FALSE; 144 140 } 145 141 … … 187 183 188 184 if( conn->inpa != -1 ) 189 gaim_input_remove( conn->inpa );185 b_event_remove( conn->inpa ); 190 186 191 187 if( conn->established ) … … 204 200 } 205 201 206 GaimInputCondition ssl_getdirection( void *conn )202 b_input_condition ssl_getdirection( void *conn ) 207 203 { 208 204 return( gnutls_record_get_direction( ((struct scd*)conn)->session ) ? -
protocols/ssl_nss.c
r3af70b0 rb72caac 52 52 }; 53 53 54 static void ssl_connected( gpointer data, gint source, GaimInputCondition cond );54 static gboolean ssl_connected( gpointer data, gint source, b_input_condition cond ); 55 55 56 56 … … 116 116 } 117 117 118 static void ssl_connected( gpointer data, gint source, GaimInputCondition cond )118 static gboolean ssl_connected( gpointer data, gint source, b_input_condition cond ) 119 119 { 120 120 struct scd *conn = data; … … 140 140 conn->established = TRUE; 141 141 conn->func( conn->data, conn, cond ); 142 return ;142 return FALSE; 143 143 144 144 ssl_connected_failure: … … 149 149 if( source >= 0 ) closesocket( source ); 150 150 g_free( conn ); 151 152 return FALSE; 151 153 } 152 154 … … 182 184 } 183 185 184 GaimInputCondition ssl_getdirection( void *conn )186 b_input_condition ssl_getdirection( void *conn ) 185 187 { 186 188 /* Just in case someone calls us, let's return the most likely case: */ -
protocols/ssl_openssl.c
r3af70b0 rb72caac 52 52 }; 53 53 54 static void ssl_connected( gpointer data, gint source, GaimInputCondition cond ); 55 54 static gboolean ssl_connected( gpointer data, gint source, b_input_condition cond ); 56 55 57 56 … … 95 94 } 96 95 97 static void ssl_handshake( gpointer data, gint source, GaimInputCondition cond );98 99 static void ssl_connected( gpointer data, gint source, GaimInputCondition cond )96 static gboolean ssl_handshake( gpointer data, gint source, b_input_condition cond ); 97 98 static gboolean ssl_connected( gpointer data, gint source, b_input_condition cond ) 100 99 { 101 100 struct scd *conn = data; … … 104 103 return ssl_handshake( data, -1, cond ); 105 104 106 /* Make it non-blocking at least during the handshake...*/105 /* We can do at least the handshake with non-blocking I/O */ 107 106 sock_make_nonblocking( conn->fd ); 108 107 SSL_set_fd( conn->ssl, conn->fd ); … … 111 110 } 112 111 113 static void ssl_handshake( gpointer data, gint source, GaimInputCondition cond )112 static gboolean ssl_handshake( gpointer data, gint source, b_input_condition cond ) 114 113 { 115 114 struct scd *conn = data; 116 115 int st; 117 118 if( conn->inpa != -1 )119 {120 gaim_input_remove( conn->inpa );121 conn->inpa = -1;122 }123 116 124 117 if( ( st = SSL_connect( conn->ssl ) ) < 0 ) … … 128 121 goto ssl_connected_failure; 129 122 130 conn->inpa = gaim_input_add( conn->fd, ssl_getdirection( conn ), ssl_handshake, data );131 return ;123 conn->inpa = b_input_add( conn->fd, ssl_getdirection( conn ), ssl_handshake, data ); 124 return FALSE; 132 125 } 133 126 … … 135 128 sock_make_blocking( conn->fd ); /* For now... */ 136 129 conn->func( conn->data, conn, cond ); 137 return ;130 return FALSE; 138 131 139 132 ssl_connected_failure: … … 151 144 if( source >= 0 ) closesocket( source ); 152 145 g_free( conn ); 146 147 return FALSE; 153 148 } 154 149 … … 204 199 205 200 if( conn->inpa != -1 ) 206 gaim_input_remove( conn->inpa );201 b_event_remove( conn->inpa ); 207 202 208 203 if( conn->established ) … … 221 216 } 222 217 223 GaimInputCondition ssl_getdirection( void *conn )218 b_input_condition ssl_getdirection( void *conn ) 224 219 { 225 220 return( ((struct scd*)conn)->lasterr == SSL_ERROR_WANT_WRITE ? GAIM_INPUT_WRITE : GAIM_INPUT_READ ); -
protocols/yahoo/yahoo.c
r3af70b0 rb72caac 443 443 }; 444 444 445 void byahoo_connect_callback( gpointer data, gint source, GaimInputCondition cond )445 void byahoo_connect_callback( gpointer data, gint source, b_input_condition cond ) 446 446 { 447 447 struct byahoo_connect_callback_data *d = data; … … 465 465 }; 466 466 467 void byahoo_read_ready_callback( gpointer data, gint source, GaimInputCondition cond )467 gboolean byahoo_read_ready_callback( gpointer data, gint source, b_input_condition cond ) 468 468 { 469 469 struct byahoo_read_ready_data *d = data; 470 470 471 471 if( !byahoo_get_gc_by_id( d->id ) ) 472 {473 472 /* WTF doesn't libyahoo clean this up? */ 474 ext_yahoo_remove_handler( d->id, d->tag ); 475 return; 476 } 473 return FALSE; 477 474 478 475 yahoo_read_ready( d->id, d->fd, d->data ); 476 477 return TRUE; 479 478 } 480 479 … … 487 486 }; 488 487 489 void byahoo_write_ready_callback( gpointer data, gint source, GaimInputCondition cond )488 gboolean byahoo_write_ready_callback( gpointer data, gint source, b_input_condition cond ) 490 489 { 491 490 struct byahoo_write_ready_data *d = data; 492 491 493 492 if( !byahoo_get_gc_by_id( d->id ) ) 494 {495 493 /* WTF doesn't libyahoo clean this up? */ 496 ext_yahoo_remove_handler( d->id, d->tag ); 497 return; 498 } 494 return FALSE; 499 495 500 496 yahoo_write_ready( d->id, d->fd, d->data ); 497 498 return FALSE; 501 499 } 502 500 … … 687 685 688 686 inp->d = d; 689 d->tag = inp->h = gaim_input_add( fd, GAIM_INPUT_READ, (GaimInputFunction) byahoo_read_ready_callback, (gpointer) d );687 d->tag = inp->h = b_input_add( fd, GAIM_INPUT_READ, (b_event_handler) byahoo_read_ready_callback, (gpointer) d ); 690 688 } 691 689 else if( cond == YAHOO_INPUT_WRITE ) … … 698 696 699 697 inp->d = d; 700 d->tag = inp->h = gaim_input_add( fd, GAIM_INPUT_WRITE, (GaimInputFunction) byahoo_write_ready_callback, (gpointer) d );698 d->tag = inp->h = b_input_add( fd, GAIM_INPUT_WRITE, (b_event_handler) byahoo_write_ready_callback, (gpointer) d ); 701 699 } 702 700 else … … 729 727 } 730 728 731 gaim_input_remove( tag );729 b_event_remove( tag ); 732 730 } 733 731 … … 738 736 739 737 d = g_new0( struct byahoo_connect_callback_data, 1 ); 740 if( ( fd = proxy_connect( host, port, ( GaimInputFunction) byahoo_connect_callback, (gpointer) d ) ) < 0 )738 if( ( fd = proxy_connect( host, port, (b_event_handler) byahoo_connect_callback, (gpointer) d ) ) < 0 ) 741 739 { 742 740 g_free( d );
Note: See TracChangeset
for help on using the changeset viewer.