diff -pruN libyahoo2-0.7.5/src/libyahoo2.c libyahoo2-0.7.5-ab/src/libyahoo2.c
--- libyahoo2-0.7.5/src/libyahoo2.c	2004-08-08 14:17:59.000000000 -0700
+++ libyahoo2-0.7.5-ab/src/libyahoo2.c	2007-10-14 06:26:45.000000000 -0700
@@ -727,6 +727,31 @@ static void yahoo_add_to_send_queue(stru
 		yid->write_tag=YAHOO_CALLBACK(ext_yahoo_add_handler)(yid->yd->client_id, yid->fd, YAHOO_INPUT_WRITE, yid);
 }
 
+static int yahoo_send_data(int fd, void *data, int len)
+{
+	int ret;
+	int e;
+
+	if (fd < 0)
+		return -1;
+
+	yahoo_packet_dump(data, len);
+
+	do {
+		ret = write(fd, data, len);
+	} while(ret == -1 && errno==EINTR);
+	e=errno;
+
+	if (ret == -1)  {
+		LOG(("wrote data: ERR %s", strerror(errno)));
+	} else {
+		LOG(("wrote data: OK"));
+	}
+
+	errno=e;
+	return ret;
+}
+
 static void yahoo_send_packet(struct yahoo_input_data *yid, struct yahoo_packet *pkt, int extra_pad)
 {
 	int pktlen = yahoo_packet_length(pkt);
@@ -752,7 +777,7 @@ static void yahoo_send_packet(struct yah
 
 	yahoo_packet_dump(data, len);
 	
-	yahoo_add_to_send_queue(yid, data, len);
+	yahoo_send_data(yid->fd, data, len);
 	FREE(data);
 }
 
@@ -770,31 +795,6 @@ static void yahoo_packet_free(struct yah
 	FREE(pkt);
 }
 
-static int yahoo_send_data(int fd, void *data, int len)
-{
-	int ret;
-	int e;
-
-	if (fd < 0)
-		return -1;
-
-	yahoo_packet_dump(data, len);
-
-	do {
-		ret = write(fd, data, len);
-	} while(ret == -1 && errno==EINTR);
-	e=errno;
-
-	if (ret == -1)  {
-		LOG(("wrote data: ERR %s", strerror(errno)));
-	} else {
-		LOG(("wrote data: OK"));
-	}
-
-	errno=e;
-	return ret;
-}
-
 void yahoo_close(int id) 
 {
 	struct yahoo_data *yd = find_conn_by_id(id);
