diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/Makefile | 2 | ||||
| -rw-r--r-- | lib/events.h | 6 | ||||
| -rw-r--r-- | lib/events_glib.c | 17 | ||||
| -rw-r--r-- | lib/events_libevent.c | 16 | ||||
| -rw-r--r-- | lib/ftutil.c | 134 | ||||
| -rw-r--r-- | lib/ftutil.h | 40 | ||||
| -rw-r--r-- | lib/http_client.c | 6 | ||||
| -rw-r--r-- | lib/proxy.c | 64 | ||||
| -rw-r--r-- | lib/ssl_bogus.c | 2 | ||||
| -rw-r--r-- | lib/ssl_client.h | 2 | ||||
| -rw-r--r-- | lib/ssl_gnutls.c | 4 | ||||
| -rw-r--r-- | lib/ssl_nss.c | 2 | ||||
| -rw-r--r-- | lib/ssl_openssl.c | 4 | ||||
| -rw-r--r-- | lib/ssl_sspi.c | 2 | 
14 files changed, 243 insertions, 58 deletions
| diff --git a/lib/Makefile b/lib/Makefile index 03fef1ab..3d128b5a 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -9,7 +9,7 @@  -include ../Makefile.settings  # [SH] Program variables -objects = arc.o base64.o $(EVENT_HANDLER) http_client.o ini.o md5.o misc.o proxy.o sha1.o $(SSL_CLIENT) url.o xmltree.o +objects = arc.o base64.o $(EVENT_HANDLER) http_client.o ini.o md5.o misc.o proxy.o sha1.o $(SSL_CLIENT) url.o xmltree.o ftutil.o  CFLAGS += -Wall  LFLAGS += -r diff --git a/lib/events.h b/lib/events.h index 4baea7b6..fa30cf27 100644 --- a/lib/events.h +++ b/lib/events.h @@ -47,8 +47,10 @@  /* The conditions you can pass to b_input_add()/that will be passed to     the given callback function. */  typedef enum { -	GAIM_INPUT_READ = 1 << 1, -	GAIM_INPUT_WRITE = 1 << 2 +	B_EV_IO_READ = 1 << 0, +	B_EV_IO_WRITE = 1 << 1, +	B_EV_FLAG_FORCE_ONCE = 1 << 16, +	B_EV_FLAG_FORCE_REPEAT = 1 << 17,  } b_input_condition;  typedef gboolean (*b_event_handler)(gpointer data, gint fd, b_input_condition cond); diff --git a/lib/events_glib.c b/lib/events_glib.c index 3e194e98..d6ac82cc 100644 --- a/lib/events_glib.c +++ b/lib/events_glib.c @@ -48,6 +48,7 @@  typedef struct _GaimIOClosure {  	b_event_handler function;  	gpointer data; +	guint flags;  } GaimIOClosure;  static GMainLoop *loop = NULL; @@ -75,9 +76,9 @@ static gboolean gaim_io_invoke(GIOChannel *source, GIOCondition condition, gpoin  	gboolean st;  	if (condition & GAIM_READ_COND) -		gaim_cond |= GAIM_INPUT_READ; +		gaim_cond |= B_EV_IO_READ;  	if (condition & GAIM_WRITE_COND) -		gaim_cond |= GAIM_INPUT_WRITE; +		gaim_cond |= B_EV_IO_WRITE;  	event_debug( "gaim_io_invoke( %d, %d, 0x%x )\n", g_io_channel_unix_get_fd(source), condition, data ); @@ -86,7 +87,12 @@ static gboolean gaim_io_invoke(GIOChannel *source, GIOCondition condition, gpoin  	if( !st )  		event_debug( "Returned FALSE, cancelling.\n" ); -	return st; +	if (closure->flags & B_EV_FLAG_FORCE_ONCE) +		return FALSE; +	else if (closure->flags & B_EV_FLAG_FORCE_REPEAT) +		return TRUE; +	else +		return st;  }  static void gaim_io_destroy(gpointer data) @@ -104,10 +110,11 @@ gint b_input_add(gint source, b_input_condition condition, b_event_handler funct  	closure->function = function;  	closure->data = data; +	closure->flags = condition; -	if (condition & GAIM_INPUT_READ) +	if (condition & B_EV_IO_READ)  		cond |= GAIM_READ_COND; -	if (condition & GAIM_INPUT_WRITE) +	if (condition & B_EV_IO_WRITE)  		cond |= GAIM_WRITE_COND;  	channel = g_io_channel_unix_new(source); diff --git a/lib/events_libevent.c b/lib/events_libevent.c index cf616576..43d770ea 100644 --- a/lib/events_libevent.c +++ b/lib/events_libevent.c @@ -59,6 +59,7 @@ struct b_event_data  	gint timeout;  	b_event_handler function;  	void *data; +	guint flags;  };  void b_main_init() @@ -125,9 +126,9 @@ static void b_event_passthrough( int fd, short event, void *data )  	if( fd >= 0 )  	{  		if( event & EV_READ ) -			cond |= GAIM_INPUT_READ; +			cond |= B_EV_IO_READ;  		if( event & EV_WRITE ) -			cond |= GAIM_INPUT_WRITE; +			cond |= B_EV_IO_WRITE;  	}  	event_debug( "b_event_passthrough( %d, %d, 0x%x ) (%d)\n", fd, event, (int) data, b_ev->id ); @@ -149,7 +150,7 @@ static void b_event_passthrough( int fd, short event, void *data )  		/* This event was killed already, don't touch it! */  		return;  	} -	else if( !st ) +	else if( !st && !( b_ev->flags & B_EV_FLAG_FORCE_REPEAT ) )  	{  		event_debug( "Handler returned FALSE: " );  		b_event_remove( id_cur ); @@ -173,8 +174,8 @@ gint b_input_add( gint fd, b_input_condition condition, b_event_handler function  	event_debug( "b_input_add( %d, %d, 0x%x, 0x%x ) ", fd, condition, function, data ); -	if( ( condition & GAIM_INPUT_READ  && ( b_ev = g_hash_table_lookup( read_hash,  &fd ) ) ) || -	    ( condition & GAIM_INPUT_WRITE && ( b_ev = g_hash_table_lookup( write_hash, &fd ) ) ) ) +	if( ( condition & B_EV_IO_READ  && ( b_ev = g_hash_table_lookup( read_hash,  &fd ) ) ) || +	    ( condition & B_EV_IO_WRITE && ( b_ev = g_hash_table_lookup( write_hash, &fd ) ) ) )  	{  		/* We'll stick with this libevent entry, but give it a new BitlBee id. */  		g_hash_table_remove( id_hash, &b_ev->id ); @@ -197,9 +198,9 @@ gint b_input_add( gint fd, b_input_condition condition, b_event_handler function  		b_ev->data = data;  		out_cond = EV_PERSIST; -		if( condition & GAIM_INPUT_READ ) +		if( condition & B_EV_IO_READ )  			out_cond |= EV_READ; -		if( condition & GAIM_INPUT_WRITE ) +		if( condition & B_EV_IO_WRITE )  			out_cond |= EV_WRITE;  		event_set( &b_ev->evinfo, fd, out_cond, b_event_passthrough, b_ev ); @@ -211,6 +212,7 @@ gint b_input_add( gint fd, b_input_condition condition, b_event_handler function  			g_hash_table_insert( write_hash, &b_ev->evinfo.ev_fd, b_ev );  	} +	b_ev->flags = condition;  	g_hash_table_insert( id_hash, &b_ev->id, b_ev );  	return b_ev->id;  } diff --git a/lib/ftutil.c b/lib/ftutil.c new file mode 100644 index 00000000..d59dd4e0 --- /dev/null +++ b/lib/ftutil.c @@ -0,0 +1,134 @@ +/***************************************************************************\ +*                                                                           * +*  BitlBee - An IRC to IM gateway                                           * +*  Utility functions for file transfer                                      * +*                                                                           * +*  Copyright 2008 Uli Meis <a.sporto+bee@gmail.com>                         * +*                                                                           * +*  This program is free software; you can redistribute it and/or modify     * +*  it under the terms of the GNU General Public License as published by     * +*  the Free Software Foundation; either version 2 of the License, or        * +*  (at your option) any later version.                                      * +*                                                                           * +*  This program is distributed in the hope that it will be useful,          * +*  but WITHOUT ANY WARRANTY; without even the implied warranty of           * +*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            * +*  GNU General Public License for more details.                             * +*                                                                           * +*  You should have received a copy of the GNU General Public License along  * +*  with this program; if not, write to the Free Software Foundation, Inc.,  * +*  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.              * +*                                                                           * +\***************************************************************************/ + +#define BITLBEE_CORE +#include "bitlbee.h" +#include <poll.h> +#include <netinet/tcp.h> +#include "lib/ftutil.h" + +#define ASSERTSOCKOP(op, msg) \ +	if( (op) == -1 ) {\ +		g_snprintf( errmsg, sizeof( errmsg ), msg ": %s", strerror( errno ) ); \ +		return -1; } + +/* + * Creates a listening socket and returns it in saddr_ptr. + */ +int ft_listen( struct sockaddr_storage *saddr_ptr, char *host, char *port, int for_bitlbee_client, char **errptr ) +{ +	int fd, gret, saddrlen; +	struct addrinfo hints, *rp; +	socklen_t ssize = sizeof( struct sockaddr_storage ); +	struct sockaddr_storage saddrs, *saddr = &saddrs; +	static char errmsg[1024]; +	char *ftlisten = global.conf->ft_listen; + +	if( errptr ) +		*errptr = errmsg; + +	strcpy( port, "0" ); + +	/* Format is <IP-A>[:<Port-A>];<IP-B>[:<Port-B>] where +	 * A is for connections with the bitlbee client (DCC) +	 * and B is for connections with IM peers. +	 */ +	if( ftlisten ) +	{ +		char *scolon = strchr( ftlisten, ';' ); +		char *colon; + +		if( scolon ) +		{ +			if( for_bitlbee_client ) +			{ +				*scolon = '\0'; +				strncpy( host, ftlisten, HOST_NAME_MAX ); +				*scolon = ';'; +			} +			else +			{ +				strncpy( host, scolon + 1, HOST_NAME_MAX ); +			} +		} +		else +		{ +			strncpy( host, ftlisten, HOST_NAME_MAX ); +		} + +		if( ( colon = strchr( host, ':' ) ) ) +		{ +			*colon = '\0'; +			strncpy( port, colon + 1, 5 ); +		} +	} +	else +	{ +		ASSERTSOCKOP( gethostname( host, HOST_NAME_MAX + 1 ), "gethostname()" ); +	} + +	memset( &hints, 0, sizeof( struct addrinfo ) ); +	hints.ai_socktype = SOCK_STREAM; +	hints.ai_flags = AI_NUMERICSERV; + +	if ( ( gret = getaddrinfo( host, port, &hints, &rp ) ) != 0 ) +	{ +		sprintf( errmsg, "getaddrinfo() failed: %s", gai_strerror( gret ) ); +		return -1; +	} + +	saddrlen = rp->ai_addrlen; + +	memcpy( saddr, rp->ai_addr, saddrlen ); + +	freeaddrinfo( rp ); + +	ASSERTSOCKOP( fd = socket( saddr->ss_family, SOCK_STREAM, 0 ), "Opening socket" ); +	ASSERTSOCKOP( bind( fd, ( struct sockaddr *)saddr, saddrlen ), "Binding socket" ); +	ASSERTSOCKOP( listen( fd, 1 ), "Making socket listen" ); + +	if ( !inet_ntop( saddr->ss_family, saddr->ss_family == AF_INET ? +			( void * )&( ( struct sockaddr_in * ) saddr )->sin_addr.s_addr : +			( void * )&( ( struct sockaddr_in6 * ) saddr )->sin6_addr.s6_addr, +			host, HOST_NAME_MAX ) ) +	{ +		strcpy( errmsg, "inet_ntop failed on listening socket" ); +		return -1; +	} + +	ASSERTSOCKOP( getsockname( fd, ( struct sockaddr *)saddr, &ssize ), "Getting socket name" ); + +	if( saddr->ss_family == AF_INET ) +		g_snprintf( port, 6, "%d", ntohs( ( (struct sockaddr_in *) saddr )->sin_port ) ); +	else +		g_snprintf( port, 6, "%d", ntohs( ( (struct sockaddr_in6 *) saddr )->sin6_port ) ); + +	if( saddr_ptr ) +		memcpy( saddr_ptr, saddr, saddrlen ); + +	/* I hate static-length strings.. */ +	host[HOST_NAME_MAX] = '\0'; +	port[5] = '\0'; +	 +	return fd; +} diff --git a/lib/ftutil.h b/lib/ftutil.h new file mode 100644 index 00000000..c4a5b02b --- /dev/null +++ b/lib/ftutil.h @@ -0,0 +1,40 @@ +/***************************************************************************\ +*                                                                           * +*  BitlBee - An IRC to IM gateway                                           * +*  Utility functions for file transfer                                      * +*                                                                           * +*  Copyright 2008 Uli Meis <a.sporto+bee@gmail.com>                         * +*                                                                           * +*  This program is free software; you can redistribute it and/or modify     * +*  it under the terms of the GNU General Public License as published by     * +*  the Free Software Foundation; either version 2 of the License, or        * +*  (at your option) any later version.                                      * +*                                                                           * +*  This program is distributed in the hope that it will be useful,          * +*  but WITHOUT ANY WARRANTY; without even the implied warranty of           * +*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            * +*  GNU General Public License for more details.                             * +*                                                                           * +*  You should have received a copy of the GNU General Public License along  * +*  with this program; if not, write to the Free Software Foundation, Inc.,  * +*  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.              * +*                                                                           * +\***************************************************************************/ + +#ifndef AI_NUMERICSERV +#define AI_NUMERICSERV 0x0400   /* Don't use name resolution.  */ +#endif + +/* Some ifdefs for ulibc and apparently also BSD (Thanks to Whoopie) */ +#ifndef HOST_NAME_MAX +#include <sys/param.h> +#ifdef MAXHOSTNAMELEN +#define HOST_NAME_MAX MAXHOSTNAMELEN +#else +#define HOST_NAME_MAX 255 +#endif +#endif + +/* This function should be used with care. host should be AT LEAST a +   char[HOST_NAME_MAX+1] and port AT LEAST a char[6]. */ +int ft_listen( struct sockaddr_storage *saddr_ptr, char *host, char *port, int for_bitlbee_client, char **errptr ); diff --git a/lib/http_client.c b/lib/http_client.c index aae5645b..e9d3c1bb 100644 --- a/lib/http_client.c +++ b/lib/http_client.c @@ -148,10 +148,10 @@ static gboolean http_connected( gpointer data, int source, b_input_condition con  	if( req->bytes_written < req->request_length )  		req->inpa = b_input_add( source, -		                         req->ssl ? ssl_getdirection( req->ssl ) : GAIM_INPUT_WRITE, +		                         req->ssl ? ssl_getdirection( req->ssl ) : B_EV_IO_WRITE,  	        	                 http_connected, req );  	else -		req->inpa = b_input_add( source, GAIM_INPUT_READ, http_incoming_data, req ); +		req->inpa = b_input_add( source, B_EV_IO_READ, http_incoming_data, req );  	return FALSE; @@ -233,7 +233,7 @@ static gboolean http_incoming_data( gpointer data, int source, b_input_condition  	/* There will be more! */  	req->inpa = b_input_add( req->fd, -	                         req->ssl ? ssl_getdirection( req->ssl ) : GAIM_INPUT_READ, +	                         req->ssl ? ssl_getdirection( req->ssl ) : B_EV_IO_READ,  	                         http_incoming_data, req );  	return FALSE; diff --git a/lib/proxy.c b/lib/proxy.c index e52837fe..baf5823a 100644 --- a/lib/proxy.c +++ b/lib/proxy.c @@ -90,9 +90,9 @@ static gboolean gaim_io_connected(gpointer data, gint source, b_input_condition  		closesocket(source);  		b_event_remove(phb->inpa);  		if( phb->proxy_func ) -			phb->proxy_func(phb->proxy_data, -1, GAIM_INPUT_READ); +			phb->proxy_func(phb->proxy_data, -1, B_EV_IO_READ);  		else { -			phb->func(phb->data, -1, GAIM_INPUT_READ); +			phb->func(phb->data, -1, B_EV_IO_READ);  			g_free(phb);  		}  		return FALSE; @@ -101,9 +101,9 @@ static gboolean gaim_io_connected(gpointer data, gint source, b_input_condition  	sock_make_blocking(source);  	b_event_remove(phb->inpa);  	if( phb->proxy_func ) -		phb->proxy_func(phb->proxy_data, source, GAIM_INPUT_READ); +		phb->proxy_func(phb->proxy_data, source, B_EV_IO_READ);  	else { -		phb->func(phb->data, source, GAIM_INPUT_READ); +		phb->func(phb->data, source, B_EV_IO_READ);  		g_free(phb);  	} @@ -146,7 +146,7 @@ static int proxy_connect_none(const char *host, unsigned short port, struct PHB  		return -1;  	} else { -		phb->inpa = b_input_add(fd, GAIM_INPUT_WRITE, gaim_io_connected, phb); +		phb->inpa = b_input_add(fd, B_EV_IO_WRITE, gaim_io_connected, phb);  		phb->fd = fd;  		return fd; @@ -178,14 +178,14 @@ static gboolean http_canread(gpointer data, gint source, b_input_condition cond)  	if ((memcmp(HTTP_GOODSTRING, inputline, strlen(HTTP_GOODSTRING)) == 0) ||  	    (memcmp(HTTP_GOODSTRING2, inputline, strlen(HTTP_GOODSTRING2)) == 0)) { -		phb->func(phb->data, source, GAIM_INPUT_READ); +		phb->func(phb->data, source, B_EV_IO_READ);  		g_free(phb->host);  		g_free(phb);  		return FALSE;  	}  	close(source); -	phb->func(phb->data, -1, GAIM_INPUT_READ); +	phb->func(phb->data, -1, B_EV_IO_READ);  	g_free(phb->host);  	g_free(phb); @@ -203,7 +203,7 @@ static gboolean http_canwrite(gpointer data, gint source, b_input_condition cond  	len = sizeof(error);  	if (getsockopt(source, SOL_SOCKET, SO_ERROR, &error, &len) < 0) {  		close(source); -		phb->func(phb->data, -1, GAIM_INPUT_READ); +		phb->func(phb->data, -1, B_EV_IO_READ);  		g_free(phb->host);  		g_free(phb);  		return FALSE; @@ -214,7 +214,7 @@ static gboolean http_canwrite(gpointer data, gint source, b_input_condition cond  		   phb->host, phb->port);  	if (send(source, cmd, strlen(cmd), 0) < 0) {  		close(source); -		phb->func(phb->data, -1, GAIM_INPUT_READ); +		phb->func(phb->data, -1, B_EV_IO_READ);  		g_free(phb->host);  		g_free(phb);  		return FALSE; @@ -229,7 +229,7 @@ static gboolean http_canwrite(gpointer data, gint source, b_input_condition cond  		g_free(t2);  		if (send(source, cmd, strlen(cmd), 0) < 0) {  			close(source); -			phb->func(phb->data, -1, GAIM_INPUT_READ); +			phb->func(phb->data, -1, B_EV_IO_READ);  			g_free(phb->host);  			g_free(phb);  			return FALSE; @@ -239,13 +239,13 @@ static gboolean http_canwrite(gpointer data, gint source, b_input_condition cond  	g_snprintf(cmd, sizeof(cmd), "\r\n");  	if (send(source, cmd, strlen(cmd), 0) < 0) {  		close(source); -		phb->func(phb->data, -1, GAIM_INPUT_READ); +		phb->func(phb->data, -1, B_EV_IO_READ);  		g_free(phb->host);  		g_free(phb);  		return FALSE;  	} -	phb->inpa = b_input_add(source, GAIM_INPUT_READ, http_canread, phb); +	phb->inpa = b_input_add(source, B_EV_IO_READ, http_canread, phb);  	return FALSE;  } @@ -272,14 +272,14 @@ static gboolean s4_canread(gpointer data, gint source, b_input_condition cond)  	memset(packet, 0, sizeof(packet));  	if (read(source, packet, 9) >= 4 && packet[1] == 90) { -		phb->func(phb->data, source, GAIM_INPUT_READ); +		phb->func(phb->data, source, B_EV_IO_READ);  		g_free(phb->host);  		g_free(phb);  		return FALSE;  	}  	close(source); -	phb->func(phb->data, -1, GAIM_INPUT_READ); +	phb->func(phb->data, -1, B_EV_IO_READ);  	g_free(phb->host);  	g_free(phb); @@ -298,7 +298,7 @@ static gboolean s4_canwrite(gpointer data, gint source, b_input_condition cond)  	len = sizeof(error);  	if (getsockopt(source, SOL_SOCKET, SO_ERROR, &error, &len) < 0) {  		close(source); -		phb->func(phb->data, -1, GAIM_INPUT_READ); +		phb->func(phb->data, -1, B_EV_IO_READ);  		g_free(phb->host);  		g_free(phb);  		return FALSE; @@ -308,7 +308,7 @@ static gboolean s4_canwrite(gpointer data, gint source, b_input_condition cond)  	/* XXX does socks4 not support host name lookups by the proxy? */  	if (!(hp = gethostbyname(phb->host))) {  		close(source); -		phb->func(phb->data, -1, GAIM_INPUT_READ); +		phb->func(phb->data, -1, B_EV_IO_READ);  		g_free(phb->host);  		g_free(phb);  		return FALSE; @@ -325,13 +325,13 @@ static gboolean s4_canwrite(gpointer data, gint source, b_input_condition cond)  	packet[8] = 0;  	if (write(source, packet, 9) != 9) {  		close(source); -		phb->func(phb->data, -1, GAIM_INPUT_READ); +		phb->func(phb->data, -1, B_EV_IO_READ);  		g_free(phb->host);  		g_free(phb);  		return FALSE;  	} -	phb->inpa = b_input_add(source, GAIM_INPUT_READ, s4_canread, phb); +	phb->inpa = b_input_add(source, B_EV_IO_READ, s4_canread, phb);  	return FALSE;  } @@ -358,20 +358,20 @@ static gboolean s5_canread_again(gpointer data, gint source, b_input_condition c  	if (read(source, buf, 10) < 10) {  		close(source); -		phb->func(phb->data, -1, GAIM_INPUT_READ); +		phb->func(phb->data, -1, B_EV_IO_READ);  		g_free(phb->host);  		g_free(phb);  		return FALSE;  	}  	if ((buf[0] != 0x05) || (buf[1] != 0x00)) {  		close(source); -		phb->func(phb->data, -1, GAIM_INPUT_READ); +		phb->func(phb->data, -1, B_EV_IO_READ);  		g_free(phb->host);  		g_free(phb);  		return FALSE;  	} -	phb->func(phb->data, source, GAIM_INPUT_READ); +	phb->func(phb->data, source, B_EV_IO_READ);  	g_free(phb->host);  	g_free(phb); @@ -395,13 +395,13 @@ static void s5_sendconnect(gpointer data, gint source)  	if (write(source, buf, (5 + strlen(phb->host) + 2)) < (5 + strlen(phb->host) + 2)) {  		close(source); -		phb->func(phb->data, -1, GAIM_INPUT_READ); +		phb->func(phb->data, -1, B_EV_IO_READ);  		g_free(phb->host);  		g_free(phb);  		return;  	} -	phb->inpa = b_input_add(source, GAIM_INPUT_READ, s5_canread_again, phb); +	phb->inpa = b_input_add(source, B_EV_IO_READ, s5_canread_again, phb);  }  static gboolean s5_readauth(gpointer data, gint source, b_input_condition cond) @@ -413,7 +413,7 @@ static gboolean s5_readauth(gpointer data, gint source, b_input_condition cond)  	if (read(source, buf, 2) < 2) {  		close(source); -		phb->func(phb->data, -1, GAIM_INPUT_READ); +		phb->func(phb->data, -1, B_EV_IO_READ);  		g_free(phb->host);  		g_free(phb);  		return FALSE; @@ -421,7 +421,7 @@ static gboolean s5_readauth(gpointer data, gint source, b_input_condition cond)  	if ((buf[0] != 0x01) || (buf[1] != 0x00)) {  		close(source); -		phb->func(phb->data, -1, GAIM_INPUT_READ); +		phb->func(phb->data, -1, B_EV_IO_READ);  		g_free(phb->host);  		g_free(phb);  		return FALSE; @@ -441,7 +441,7 @@ static gboolean s5_canread(gpointer data, gint source, b_input_condition cond)  	if (read(source, buf, 2) < 2) {  		close(source); -		phb->func(phb->data, -1, GAIM_INPUT_READ); +		phb->func(phb->data, -1, B_EV_IO_READ);  		g_free(phb->host);  		g_free(phb);  		return FALSE; @@ -449,7 +449,7 @@ static gboolean s5_canread(gpointer data, gint source, b_input_condition cond)  	if ((buf[0] != 0x05) || (buf[1] == 0xff)) {  		close(source); -		phb->func(phb->data, -1, GAIM_INPUT_READ); +		phb->func(phb->data, -1, B_EV_IO_READ);  		g_free(phb->host);  		g_free(phb);  		return FALSE; @@ -464,13 +464,13 @@ static gboolean s5_canread(gpointer data, gint source, b_input_condition cond)  		memcpy(buf + 2 + i + 1, proxypass, j);  		if (write(source, buf, 3 + i + j) < 3 + i + j) {  			close(source); -			phb->func(phb->data, -1, GAIM_INPUT_READ); +			phb->func(phb->data, -1, B_EV_IO_READ);  			g_free(phb->host);  			g_free(phb);  			return FALSE;  		} -		phb->inpa = b_input_add(source, GAIM_INPUT_READ, s5_readauth, phb); +		phb->inpa = b_input_add(source, B_EV_IO_READ, s5_readauth, phb);  	} else {  		s5_sendconnect(phb, source);  	} @@ -490,7 +490,7 @@ static gboolean s5_canwrite(gpointer data, gint source, b_input_condition cond)  	len = sizeof(error);  	if (getsockopt(source, SOL_SOCKET, SO_ERROR, &error, &len) < 0) {  		close(source); -		phb->func(phb->data, -1, GAIM_INPUT_READ); +		phb->func(phb->data, -1, B_EV_IO_READ);  		g_free(phb->host);  		g_free(phb);  		return FALSE; @@ -512,13 +512,13 @@ static gboolean s5_canwrite(gpointer data, gint source, b_input_condition cond)  	if (write(source, buf, i) < i) {  		close(source); -		phb->func(phb->data, -1, GAIM_INPUT_READ); +		phb->func(phb->data, -1, B_EV_IO_READ);  		g_free(phb->host);  		g_free(phb);  		return FALSE;  	} -	phb->inpa = b_input_add(source, GAIM_INPUT_READ, s5_canread, phb); +	phb->inpa = b_input_add(source, B_EV_IO_READ, s5_canread, phb);  	return FALSE;  } diff --git a/lib/ssl_bogus.c b/lib/ssl_bogus.c index a07ea752..9c368c66 100644 --- a/lib/ssl_bogus.c +++ b/lib/ssl_bogus.c @@ -58,7 +58,7 @@ void *ssl_starttls( int fd, ssl_input_function func, gpointer data )  b_input_condition ssl_getdirection( void *conn )  { -	return GAIM_INPUT_READ; +	return B_EV_IO_READ;  }  int ssl_pending( void *conn ) diff --git a/lib/ssl_client.h b/lib/ssl_client.h index f91d0d70..0a8e82d8 100644 --- a/lib/ssl_client.h +++ b/lib/ssl_client.h @@ -70,7 +70,7 @@ G_MODULE_EXPORT void ssl_disconnect( void *conn_ );     handling. */  G_MODULE_EXPORT int ssl_getfd( void *conn ); -/* This function returns GAIM_INPUT_READ/WRITE. With SSL connections it's +/* This function returns B_EV_IO_READ/WRITE. With SSL connections it's     possible that something has to be read while actually were trying to     write something (think about key exchange/refresh/etc). So when an     SSL operation returned SSL_AGAIN, *always* use this function when diff --git a/lib/ssl_gnutls.c b/lib/ssl_gnutls.c index f5945442..5a14b825 100644 --- a/lib/ssl_gnutls.c +++ b/lib/ssl_gnutls.c @@ -105,7 +105,7 @@ static gboolean ssl_starttls_real( gpointer data, gint source, b_input_condition  {  	struct scd *conn = data; -	return ssl_connected( conn, conn->fd, GAIM_INPUT_WRITE ); +	return ssl_connected( conn, conn->fd, B_EV_IO_WRITE );  }  static gboolean ssl_connected( gpointer data, gint source, b_input_condition cond ) @@ -243,5 +243,5 @@ int ssl_getfd( void *conn )  b_input_condition ssl_getdirection( void *conn )  {  	return( gnutls_record_get_direction( ((struct scd*)conn)->session ) ? -	        GAIM_INPUT_WRITE : GAIM_INPUT_READ ); +	        B_EV_IO_WRITE : B_EV_IO_READ );  } diff --git a/lib/ssl_nss.c b/lib/ssl_nss.c index eba3c441..de6e7ec6 100644 --- a/lib/ssl_nss.c +++ b/lib/ssl_nss.c @@ -192,5 +192,5 @@ int ssl_getfd( void *conn )  b_input_condition ssl_getdirection( void *conn )  {  	/* Just in case someone calls us, let's return the most likely case: */ -	return GAIM_INPUT_READ; +	return B_EV_IO_READ;  } diff --git a/lib/ssl_openssl.c b/lib/ssl_openssl.c index fc6d433e..8abff390 100644 --- a/lib/ssl_openssl.c +++ b/lib/ssl_openssl.c @@ -101,7 +101,7 @@ static gboolean ssl_starttls_real( gpointer data, gint source, b_input_condition  {  	struct scd *conn = data; -	return ssl_connected( conn, conn->fd, GAIM_INPUT_WRITE ); +	return ssl_connected( conn, conn->fd, B_EV_IO_WRITE );  }  static gboolean ssl_connected( gpointer data, gint source, b_input_condition cond ) @@ -269,5 +269,5 @@ int ssl_getfd( void *conn )  b_input_condition ssl_getdirection( void *conn )  { -	return( ((struct scd*)conn)->lasterr == SSL_ERROR_WANT_WRITE ? GAIM_INPUT_WRITE : GAIM_INPUT_READ ); +	return( ((struct scd*)conn)->lasterr == SSL_ERROR_WANT_WRITE ? B_EV_IO_WRITE : B_EV_IO_READ );  } diff --git a/lib/ssl_sspi.c b/lib/ssl_sspi.c index a16423b1..e14c451e 100644 --- a/lib/ssl_sspi.c +++ b/lib/ssl_sspi.c @@ -274,5 +274,5 @@ int ssl_getfd(void *conn)  GaimInputCondition ssl_getdirection( void *conn )  { -	return GAIM_INPUT_WRITE; /* FIXME: or GAIM_INPUT_READ */ +	return B_EV_IO_WRITE; /* FIXME: or B_EV_IO_READ */  } | 
