diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/misc.c | 9 | ||||
-rw-r--r-- | lib/misc.h | 1 | ||||
-rw-r--r-- | lib/ns_parse.c | 2 | ||||
-rw-r--r-- | lib/proxy.c | 14 |
4 files changed, 19 insertions, 7 deletions
@@ -779,3 +779,12 @@ char *get_rfc822_header( const char *text, const char *header, int len ) return NULL; } + +/* Takes a string, truncates it where it's safe, returns the new length */ +int truncate_utf8( char *string, int maxlen ) +{ + char *end; + g_utf8_validate( (const gchar *) string, maxlen, (const gchar **) &end ); + *end = '\0'; + return end - string; +} @@ -149,5 +149,6 @@ G_MODULE_EXPORT gboolean ssl_sockerr_again( void *ssl ); G_MODULE_EXPORT int md5_verify_password( char *password, char *hash ); G_MODULE_EXPORT char **split_command_parts( char *command, int limit ); G_MODULE_EXPORT char *get_rfc822_header( const char *text, const char *header, int len ); +G_MODULE_EXPORT int truncate_utf8( char *string, int maxlen ); #endif diff --git a/lib/ns_parse.c b/lib/ns_parse.c index ba45d513..0462b67e 100644 --- a/lib/ns_parse.c +++ b/lib/ns_parse.c @@ -18,7 +18,7 @@ #include "bitlbee.h" #ifndef lint -static const char rcsid[] = "$Id: ns_parse.c,v 1.10 2009/01/23 19:59:16 each Exp $"; +//static const char rcsid[] = "$Id: ns_parse.c,v 1.10 2009/01/23 19:59:16 each Exp $"; #endif #ifdef HAVE_RESOLV_A diff --git a/lib/proxy.c b/lib/proxy.c index 86bb0dcc..2e0dc2cf 100644 --- a/lib/proxy.c +++ b/lib/proxy.c @@ -65,7 +65,7 @@ static int proxy_connect_none(const char *host, unsigned short port_, struct PHB static gboolean gaim_io_connected(gpointer data, gint source, b_input_condition cond) { struct PHB *phb = data; - unsigned int len; + socklen_t len; int error = ETIMEDOUT; len = sizeof(error); @@ -85,6 +85,7 @@ static gboolean gaim_io_connected(gpointer data, gint source, b_input_condition freeaddrinfo(phb->gai); closesocket(source); b_event_remove(phb->inpa); + phb->inpa = 0; if( phb->proxy_func ) phb->proxy_func(phb->proxy_data, -1, B_EV_IO_READ); else { @@ -96,6 +97,7 @@ static gboolean gaim_io_connected(gpointer data, gint source, b_input_condition freeaddrinfo(phb->gai); sock_make_blocking(source); b_event_remove(phb->inpa); + phb->inpa = 0; if( phb->proxy_func ) phb->proxy_func(phb->proxy_data, source, B_EV_IO_READ); else { @@ -173,8 +175,8 @@ static int proxy_connect_none(const char *host, unsigned short port_, struct PHB /* Connecting to HTTP proxies */ -#define HTTP_GOODSTRING "HTTP/1.0 200 Connection established" -#define HTTP_GOODSTRING2 "HTTP/1.1 200 Connection established" +#define HTTP_GOODSTRING "HTTP/1.0 200" +#define HTTP_GOODSTRING2 "HTTP/1.1 200" static gboolean http_canread(gpointer data, gint source, b_input_condition cond) { @@ -213,7 +215,7 @@ static gboolean http_canwrite(gpointer data, gint source, b_input_condition cond { char cmd[384]; struct PHB *phb = data; - unsigned int len; + socklen_t len; int error = ETIMEDOUT; if (phb->inpa > 0) b_event_remove(phb->inpa); @@ -308,7 +310,7 @@ static gboolean s4_canwrite(gpointer data, gint source, b_input_condition cond) unsigned char packet[12]; struct hostent *hp; struct PHB *phb = data; - unsigned int len; + socklen_t len; int error = ETIMEDOUT; if (phb->inpa > 0) b_event_remove(phb->inpa); @@ -500,7 +502,7 @@ static gboolean s5_canwrite(gpointer data, gint source, b_input_condition cond) unsigned char buf[512]; int i; struct PHB *phb = data; - unsigned int len; + socklen_t len; int error = ETIMEDOUT; if (phb->inpa > 0) b_event_remove(phb->inpa); |