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);