diff options
| author | ulim <a.sporto+bee@gmail.com> | 2008-02-15 18:38:57 +0100 | 
|---|---|---|
| committer | ulim <a.sporto+bee@gmail.com> | 2008-02-15 18:38:57 +0100 | 
| commit | 1ba7e8f1d28c4876ea0b787f1e4ebb5607f48895 (patch) | |
| tree | 5ba8bed0e1ba83c56a855059e88e3d2a205fe88c /lib | |
| parent | 0fbd3a6d26d8fe747bd5e061748e75f397801064 (diff) | |
| parent | eeb85a8a880fefe655eb31b6322136b61ee969e2 (diff) | |
Merged with upstream r328
  Wilmer van der Gaast 2008-02-11 Got rid of some noise at startup: complaining when the default configuration
    Wilmer van der Gaast 2008-02-10 Added support for password-protected Jabber chatrooms.
    Wilmer van der Gaast 2008-02-10 Making AI_ADDRCONFIG optional, it doesn't exist on at least NetBSD and
    Wilmer van der Gaast 2008-02-09 Restored "add -tmp". A bit hackish, but it will do for now.
    Wilmer van der Gaast 2008-02-07 Fixed getnameinfo() calls, this fixes Solaris stability issues. Thanks to
    Wilmer van der Gaast 2008-02-04 Added bogus G_GNUC_MALLOC to restore GLib 2.4 compatibility (hopefully).
    Wilmer van der Gaast 2008-02-03 Messages from the user are also included in backlogs when joining a Jabber
    Wilmer van der Gaast 2008-02-03 Disabling "Unknown command" warnings since they're very noisy and pretty
    Wilmer van der Gaast 2008-02-03 Implemented XEP-0115. This adds some info to the <presence/> tags so
    Wilmer van der Gaast 2008-02-03 Saner garbage collection of cached packets in the Jabber module. Now
    Wilmer van der Gaast 2008-02-02 Added help_free() and cleaned up some very stale help-related stuff I
    Wilmer van der Gaast 2008-01-30 Fixed handling of OSCAR multi-part messages... They're not arrays, they're
    Wilmer van der Gaast 2008-01-24 Keeping track of valid Jabber connections so _connected() events will be
    Wilmer van der Gaast 2008-01-24 Fixed two valgrind warnings (partially uninitialized "struct tm" vars.)
    Wilmer van der Gaast 2008-01-20 The Jabber module now uses imcb_chat_log() instead of imcb_log() where
    Wilmer van der Gaast 2008-01-20 Added imcb_chat_log() for chatroom system messages, so they can be
    Wilmer van der Gaast 2008-01-20 GET_BUDDY_FIRST wasn't actually implemented, even though it was in use
    Wilmer van der Gaast 2008-01-19 Using test -f instead of test -e. This breaks if the include files are
    Wilmer van der Gaast 2008-01-19 Added byte swapping code to the new MD5 checksumming code to make it work
    Wilmer van der Gaast 2008-01-18 Moving imcb_chat_new() to a saner location (no code changes) and fixing
    Wilmer van der Gaast 2008-01-17 Apparently ext_yahoo_got_im can be called with msg=NULL, so it should be
    Wilmer van der Gaast 2008-01-17 Fixing some Solaris compiler warnings (u_int->uint, adding some typecasts
    Wilmer van der Gaast 2008-01-13 Fixed handing of failed groupchat joins.
    Wilmer van der Gaast 2008-01-13 Fixed "Conditional jump or move depends on uninitialised value(s)" at
    Wilmer van der Gaast 2008-01-13 Fixed quickstart2. (Bug #349.)
    Wilmer van der Gaast 2008-01-13 Different handling of charset mismatches before login time. Ignoring a
    Wilmer van der Gaast 2008-01-12 When a switchboard connection dies (at the TCP level) and there are still
    Wilmer van der Gaast 2008-01-12 Killed info_string_append() and now showing the IP address of ICQ users
    Wilmer van der Gaast 2008-01-11 Fixing bug #344, now away states should always be correct, even when people
    Wilmer van der Gaast 2008-01-11 Adding own handle to protocol name in blist output for people with multiple
    Wilmer van der Gaast 2008-01-10 Now setting odata->icq properly again, this got lost some time ago, which
    Wilmer van der Gaast 2008-01-06 More consistency in error/warning errors. Until now "WARNING:" was usually
    Wilmer van der Gaast 2008-01-06 Changed warning message about unsent MSN messages. It should show the actual
    Wilmer van der Gaast 2008-01-05 Added "mail_notifications" setting. Who needs those notifications anyway?
    Wilmer van der Gaast 2008-01-05 Build fix from vmiklos.
    Wilmer van der Gaast 2008-01-05 Added handling of MSN switchboard NAK messages. Untested, but hey, it
    Wilmer van der Gaast 2008-01-05 Removed closure->result. I was planning to add some more stuff, but will
    Miklos Vajna 2007-12-31 encode: md5.c is no longer in protocols/, it's in lib/
    Wilmer van der Gaast 2007-12-28 Fixed return value check in proxy_connect(), since on some systems
    Wilmer van der Gaast 2007-12-28 Added missing return in jabber_login().
    Wilmer van der Gaast 2007-12-16 Implemented XEP-0199 (patch from misc@mandriva.org).
    Wilmer van der Gaast 2007-12-12 Checking conn->xcred before trying to clean it up since GnuTLS doesn't
    Wilmer van der Gaast 2007-12-12 Killed the <server> parameter to "account add" and changed the default
    Wilmer van der Gaast 2007-12-12 Fixed sockerr_again() usage in Jabber module to (hopefully) fix a 100% CPU
    Wilmer van der Gaast 2007-12-10 Don't allow nicks that start with a number.
    Wilmer van der Gaast 2007-12-10 Fixed "set xxx" syntax (it showed all settings instead of just xxx).
    Wilmer van der Gaast 2007-12-09 If I keep forgetting to credit people in commit msgs I should probably add
    Wilmer van der Gaast 2007-12-09 Added /invite support for Jabber chatrooms (and fixed the argument order
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/events_glib.c | 10 | ||||
| -rw-r--r-- | lib/md5.c | 185 | ||||
| -rw-r--r-- | lib/md5.h | 7 | ||||
| -rw-r--r-- | lib/misc.c | 8 | ||||
| -rw-r--r-- | lib/misc.h | 1 | ||||
| -rw-r--r-- | lib/proxy.c | 21 | 
6 files changed, 127 insertions, 105 deletions
| diff --git a/lib/events_glib.c b/lib/events_glib.c index 38938380..1198dba6 100644 --- a/lib/events_glib.c +++ b/lib/events_glib.c @@ -47,7 +47,6 @@  typedef struct _GaimIOClosure {  	b_event_handler function; -	guint result;  	gpointer data;  } GaimIOClosure; @@ -100,6 +99,7 @@ gint b_input_add(gint source, b_input_condition condition, b_event_handler funct  	GaimIOClosure *closure = g_new0(GaimIOClosure, 1);  	GIOChannel *channel;  	GIOCondition cond = 0; +	int st;  	closure->function = function;  	closure->data = data; @@ -110,13 +110,13 @@ gint b_input_add(gint source, b_input_condition condition, b_event_handler funct  		cond |= GAIM_WRITE_COND;  	channel = g_io_channel_unix_new(source); -	closure->result = g_io_add_watch_full(channel, G_PRIORITY_DEFAULT, cond, -					      gaim_io_invoke, closure, gaim_io_destroy); +	st = g_io_add_watch_full(channel, G_PRIORITY_DEFAULT, cond, +	                         gaim_io_invoke, closure, gaim_io_destroy); -	event_debug( "b_input_add( %d, %d, 0x%x, 0x%x ) = %d (0x%x)\n", source, condition, function, data, closure->result, closure ); +	event_debug( "b_input_add( %d, %d, 0x%x, 0x%x ) = %d (%p)\n", source, condition, function, data, st, closure );  	g_io_channel_unref(channel); -	return closure->result; +	return st;  }  gint b_timeout_add(gint timeout, b_event_handler func, gpointer data) @@ -25,7 +25,7 @@  #include <string.h>		/* for memcpy() */  #include "md5.h" -static void md5_transform(u_int32_t buf[4], u_int32_t const in[16]); +static void md5_transform(uint32_t buf[4], uint32_t const in[16]);  /*   * Wrapper function for all-in-one MD5 @@ -34,6 +34,29 @@ static void md5_transform(u_int32_t buf[4], u_int32_t const in[16]);   * 20021120   */ +/* Turns out MD5 was designed for little-endian machines. If we're running +   on a big-endian machines, we have to swap some bytes. Since detecting +   endianness at compile time reliably seems pretty hard, let's do it at +   run-time. It's not like we're going to checksum megabytes of data... */ +static uint32_t cvt32(uint32_t val) +{ +	static int little_endian = -1; +	 +	if (little_endian == -1) +	{ +		little_endian = 1; +		little_endian = *((char*) &little_endian); +	} +	 +	if (little_endian) +		return val; +	else +		return (val >> 24) | +		       ((val >> 8) & 0xff00) | +		       ((val << 8) & 0xff0000) | +		       (val << 24); +} +  void md5_init(struct MD5Context *ctx)  {  	ctx->buf[0] = 0x67452301; @@ -52,12 +75,12 @@ void md5_init(struct MD5Context *ctx)  void md5_append(struct MD5Context *ctx, const md5_byte_t *buf,  		unsigned int len)  { -	u_int32_t t; +	uint32_t t;  	/* Update bitcount */  	t = ctx->bits[0]; -	if ((ctx->bits[0] = t + ((u_int32_t) len << 3)) < t) +	if ((ctx->bits[0] = t + ((uint32_t) len << 3)) < t)  		ctx->bits[1]++;	/* Carry from low to high */  	ctx->bits[1] += len >> 29; @@ -74,7 +97,7 @@ void md5_append(struct MD5Context *ctx, const md5_byte_t *buf,  			return;  		}  		memcpy(p, buf, t); -		md5_transform(ctx->buf, (u_int32_t *) ctx->in); +		md5_transform(ctx->buf, (uint32_t *) ctx->in);  		buf += t;  		len -= t;  	} @@ -82,7 +105,7 @@ void md5_append(struct MD5Context *ctx, const md5_byte_t *buf,  	while (len >= 64) {  		memcpy(ctx->in, buf, 64); -		md5_transform(ctx->buf, (u_int32_t *) ctx->in); +		md5_transform(ctx->buf, (uint32_t *) ctx->in);  		buf += 64;  		len -= 64;  	} @@ -116,7 +139,7 @@ void md5_finish(struct MD5Context *ctx, md5_byte_t digest[16])  	if (count < 8) {  		/* Two lots of padding:  Pad the first block to 64 bytes */  		memset(p, 0, count); -		md5_transform(ctx->buf, (u_int32_t *) ctx->in); +		md5_transform(ctx->buf, (uint32_t *) ctx->in);  		/* Now fill the next block with 56 bytes */  		memset(ctx->in, 0, 56); @@ -126,10 +149,14 @@ void md5_finish(struct MD5Context *ctx, md5_byte_t digest[16])  	}  	/* Append length in bits and transform */ -	((u_int32_t *) ctx->in)[14] = ctx->bits[0]; -	((u_int32_t *) ctx->in)[15] = ctx->bits[1]; - -	md5_transform(ctx->buf, (u_int32_t *) ctx->in); +	((uint32_t *) ctx->in)[14] = cvt32(ctx->bits[0]); +	((uint32_t *) ctx->in)[15] = cvt32(ctx->bits[1]); + +	md5_transform(ctx->buf, (uint32_t *) ctx->in); +	ctx->buf[0] = cvt32(ctx->buf[0]); +	ctx->buf[1] = cvt32(ctx->buf[1]); +	ctx->buf[2] = cvt32(ctx->buf[2]); +	ctx->buf[3] = cvt32(ctx->buf[3]);  	memcpy(digest, ctx->buf, 16);  	memset(ctx, 0, sizeof(ctx));	/* In case it's sensitive */  } @@ -151,82 +178,82 @@ void md5_finish(struct MD5Context *ctx, md5_byte_t digest[16])   * reflect the addition of 16 longwords of new data.  MD5Update blocks   * the data and converts bytes into longwords for this routine.   */ -static void md5_transform(u_int32_t buf[4], u_int32_t const in[16]) +static void md5_transform(uint32_t buf[4], uint32_t const in[16])  { -	register u_int32_t a, b, c, d; +	register uint32_t a, b, c, d;  	a = buf[0];  	b = buf[1];  	c = buf[2];  	d = buf[3]; -	MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); -	MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); -	MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); -	MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); -	MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); -	MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); -	MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); -	MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); -	MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); -	MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); -	MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); -	MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); -	MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); -	MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); -	MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); -	MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); - -	MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); -	MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); -	MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); -	MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); -	MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); -	MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); -	MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); -	MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); -	MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); -	MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); -	MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); -	MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); -	MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); -	MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); -	MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); -	MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); - -	MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); -	MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); -	MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); -	MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); -	MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); -	MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); -	MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); -	MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); -	MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); -	MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); -	MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); -	MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); -	MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); -	MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); -	MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); -	MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); - -	MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); -	MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); -	MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); -	MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); -	MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); -	MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); -	MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); -	MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); -	MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); -	MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); -	MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); -	MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); -	MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); -	MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); -	MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); -	MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); +	MD5STEP(F1, a, b, c, d, cvt32(in[0]) + 0xd76aa478, 7); +	MD5STEP(F1, d, a, b, c, cvt32(in[1]) + 0xe8c7b756, 12); +	MD5STEP(F1, c, d, a, b, cvt32(in[2]) + 0x242070db, 17); +	MD5STEP(F1, b, c, d, a, cvt32(in[3]) + 0xc1bdceee, 22); +	MD5STEP(F1, a, b, c, d, cvt32(in[4]) + 0xf57c0faf, 7); +	MD5STEP(F1, d, a, b, c, cvt32(in[5]) + 0x4787c62a, 12); +	MD5STEP(F1, c, d, a, b, cvt32(in[6]) + 0xa8304613, 17); +	MD5STEP(F1, b, c, d, a, cvt32(in[7]) + 0xfd469501, 22); +	MD5STEP(F1, a, b, c, d, cvt32(in[8]) + 0x698098d8, 7); +	MD5STEP(F1, d, a, b, c, cvt32(in[9]) + 0x8b44f7af, 12); +	MD5STEP(F1, c, d, a, b, cvt32(in[10]) + 0xffff5bb1, 17); +	MD5STEP(F1, b, c, d, a, cvt32(in[11]) + 0x895cd7be, 22); +	MD5STEP(F1, a, b, c, d, cvt32(in[12]) + 0x6b901122, 7); +	MD5STEP(F1, d, a, b, c, cvt32(in[13]) + 0xfd987193, 12); +	MD5STEP(F1, c, d, a, b, cvt32(in[14]) + 0xa679438e, 17); +	MD5STEP(F1, b, c, d, a, cvt32(in[15]) + 0x49b40821, 22); + +	MD5STEP(F2, a, b, c, d, cvt32(in[1]) + 0xf61e2562, 5); +	MD5STEP(F2, d, a, b, c, cvt32(in[6]) + 0xc040b340, 9); +	MD5STEP(F2, c, d, a, b, cvt32(in[11]) + 0x265e5a51, 14); +	MD5STEP(F2, b, c, d, a, cvt32(in[0]) + 0xe9b6c7aa, 20); +	MD5STEP(F2, a, b, c, d, cvt32(in[5]) + 0xd62f105d, 5); +	MD5STEP(F2, d, a, b, c, cvt32(in[10]) + 0x02441453, 9); +	MD5STEP(F2, c, d, a, b, cvt32(in[15]) + 0xd8a1e681, 14); +	MD5STEP(F2, b, c, d, a, cvt32(in[4]) + 0xe7d3fbc8, 20); +	MD5STEP(F2, a, b, c, d, cvt32(in[9]) + 0x21e1cde6, 5); +	MD5STEP(F2, d, a, b, c, cvt32(in[14]) + 0xc33707d6, 9); +	MD5STEP(F2, c, d, a, b, cvt32(in[3]) + 0xf4d50d87, 14); +	MD5STEP(F2, b, c, d, a, cvt32(in[8]) + 0x455a14ed, 20); +	MD5STEP(F2, a, b, c, d, cvt32(in[13]) + 0xa9e3e905, 5); +	MD5STEP(F2, d, a, b, c, cvt32(in[2]) + 0xfcefa3f8, 9); +	MD5STEP(F2, c, d, a, b, cvt32(in[7]) + 0x676f02d9, 14); +	MD5STEP(F2, b, c, d, a, cvt32(in[12]) + 0x8d2a4c8a, 20); + +	MD5STEP(F3, a, b, c, d, cvt32(in[5]) + 0xfffa3942, 4); +	MD5STEP(F3, d, a, b, c, cvt32(in[8]) + 0x8771f681, 11); +	MD5STEP(F3, c, d, a, b, cvt32(in[11]) + 0x6d9d6122, 16); +	MD5STEP(F3, b, c, d, a, cvt32(in[14]) + 0xfde5380c, 23); +	MD5STEP(F3, a, b, c, d, cvt32(in[1]) + 0xa4beea44, 4); +	MD5STEP(F3, d, a, b, c, cvt32(in[4]) + 0x4bdecfa9, 11); +	MD5STEP(F3, c, d, a, b, cvt32(in[7]) + 0xf6bb4b60, 16); +	MD5STEP(F3, b, c, d, a, cvt32(in[10]) + 0xbebfbc70, 23); +	MD5STEP(F3, a, b, c, d, cvt32(in[13]) + 0x289b7ec6, 4); +	MD5STEP(F3, d, a, b, c, cvt32(in[0]) + 0xeaa127fa, 11); +	MD5STEP(F3, c, d, a, b, cvt32(in[3]) + 0xd4ef3085, 16); +	MD5STEP(F3, b, c, d, a, cvt32(in[6]) + 0x04881d05, 23); +	MD5STEP(F3, a, b, c, d, cvt32(in[9]) + 0xd9d4d039, 4); +	MD5STEP(F3, d, a, b, c, cvt32(in[12]) + 0xe6db99e5, 11); +	MD5STEP(F3, c, d, a, b, cvt32(in[15]) + 0x1fa27cf8, 16); +	MD5STEP(F3, b, c, d, a, cvt32(in[2]) + 0xc4ac5665, 23); + +	MD5STEP(F4, a, b, c, d, cvt32(in[0]) + 0xf4292244, 6); +	MD5STEP(F4, d, a, b, c, cvt32(in[7]) + 0x432aff97, 10); +	MD5STEP(F4, c, d, a, b, cvt32(in[14]) + 0xab9423a7, 15); +	MD5STEP(F4, b, c, d, a, cvt32(in[5]) + 0xfc93a039, 21); +	MD5STEP(F4, a, b, c, d, cvt32(in[12]) + 0x655b59c3, 6); +	MD5STEP(F4, d, a, b, c, cvt32(in[3]) + 0x8f0ccc92, 10); +	MD5STEP(F4, c, d, a, b, cvt32(in[10]) + 0xffeff47d, 15); +	MD5STEP(F4, b, c, d, a, cvt32(in[1]) + 0x85845dd1, 21); +	MD5STEP(F4, a, b, c, d, cvt32(in[8]) + 0x6fa87e4f, 6); +	MD5STEP(F4, d, a, b, c, cvt32(in[15]) + 0xfe2ce6e0, 10); +	MD5STEP(F4, c, d, a, b, cvt32(in[6]) + 0xa3014314, 15); +	MD5STEP(F4, b, c, d, a, cvt32(in[13]) + 0x4e0811a1, 21); +	MD5STEP(F4, a, b, c, d, cvt32(in[4]) + 0xf7537e82, 6); +	MD5STEP(F4, d, a, b, c, cvt32(in[11]) + 0xbd3af235, 10); +	MD5STEP(F4, c, d, a, b, cvt32(in[2]) + 0x2ad7d2bb, 15); +	MD5STEP(F4, b, c, d, a, cvt32(in[9]) + 0xeb86d391, 21);  	buf[0] += a;  	buf[1] += b; @@ -26,11 +26,12 @@  #include <sys/types.h>  #include <gmodule.h> +#include <stdint.h> -typedef u_int8_t md5_byte_t; +typedef uint8_t md5_byte_t;  typedef struct MD5Context { -	u_int32_t buf[4]; -	u_int32_t bits[2]; +	uint32_t buf[4]; +	uint32_t bits[2];  	unsigned char in[64];  } md5_state_t; @@ -89,12 +89,14 @@ time_t get_time(int year, int month, int day, int hour, int min, int sec)  {  	struct tm tm; +	memset(&tm, 0, sizeof(struct tm));  	tm.tm_year = year - 1900;  	tm.tm_mon = month - 1;  	tm.tm_mday = day;  	tm.tm_hour = hour;  	tm.tm_min = min;  	tm.tm_sec = sec >= 0 ? sec : time(NULL) % 60; +	  	return mktime(&tm);  } @@ -244,12 +246,6 @@ char *escape_html( const char *html )  	return( str );  } -void info_string_append(GString *str, char *newline, char *name, char *value) -{ -	if( value && value[0] ) -		g_string_sprintfa( str, "%s%s: %s", newline, name, value ); -} -  /* Decode%20a%20file%20name						*/  void http_decode( char *s )  { @@ -41,7 +41,6 @@ G_MODULE_EXPORT void strip_linefeed( gchar *text );  G_MODULE_EXPORT char *add_cr( char *text );  G_MODULE_EXPORT char *strip_newlines(char *source);  G_MODULE_EXPORT char *normalize( const char *s ); -G_MODULE_EXPORT void info_string_append( GString *str, char *newline, char *name, char *value );  G_MODULE_EXPORT time_t get_time( int year, int month, int day, int hour, int min, int sec );  double gettime( void ); diff --git a/lib/proxy.c b/lib/proxy.c index dff5d0a4..0e1c8f07 100644 --- a/lib/proxy.c +++ b/lib/proxy.c @@ -129,18 +129,17 @@ static int proxy_connect_none(const char *host, unsigned short port, struct PHB  	event_debug("proxy_connect_none( \"%s\", %d ) = %d\n", host, port, fd); -	if (connect(fd, (struct sockaddr *)sin, sizeof(*sin)) < 0) { -		if (sockerr_again()) { -			phb->inpa = b_input_add(fd, GAIM_INPUT_WRITE, gaim_io_connected, phb); -			phb->fd = fd; -		} else { -			closesocket(fd); -			g_free(phb); -			return -1; -		} +	if (connect(fd, (struct sockaddr *)sin, sizeof(*sin)) < 0 && !sockerr_again()) { +		closesocket(fd); +		g_free(phb); +		 +		return -1; +	} else { +		phb->inpa = b_input_add(fd, GAIM_INPUT_WRITE, gaim_io_connected, phb); +		phb->fd = fd; +		 +		return fd;  	} - -	return fd;  } | 
