diff -ru3 cursedsouls-0.0.0/src/core.c cursedsouls-dev/src/core.c --- cursedsouls-0.0.0/src/core.c 2003-05-25 04:02:26.000000000 +0200 +++ cursedsouls-dev/src/core.c 2003-05-25 15:11:45.000000000 +0200 @@ -51,11 +51,14 @@ FD_ZERO(&rfds); FD_SET(sock, &rfds); tv.tv_sec=0; - tv.tv_usec=0; + tv.tv_usec=100; retval = select(sock+1, &rfds, NULL, NULL, &tv); if (retval) return RECV; + if (!want_to_send()) + return WAIT; + FD_ZERO(&rfds); FD_SET(sock, &rfds); tv.tv_sec=0; @@ -159,6 +162,7 @@ { read_server_fd_set = active_server_fd_set; retval = send_or_receive (server_sock); + if (retval == RECV) { if( next_message(server_sock) < 0) diff -ru3 cursedsouls-0.0.0/src/module.c cursedsouls-dev/src/module.c --- cursedsouls-0.0.0/src/module.c 2003-05-25 03:49:28.000000000 +0200 +++ cursedsouls-dev/src/module.c 2003-05-25 15:10:48.000000000 +0200 @@ -143,3 +143,13 @@ send_buffer(sock, &out_buffer); UNLOCK_OUTBUF; } + +int want_to_send(void) +{ + int ret = 0; + LOCK_OUTBUF; + if (out_buffer.size) + ret = 1; + UNLOCK_OUTBUF; + return ret; +} diff -ru3 cursedsouls-0.0.0/src/module.h cursedsouls-dev/src/module.h --- cursedsouls-0.0.0/src/module.h 2003-05-25 02:18:44.000000000 +0200 +++ cursedsouls-dev/src/module.h 2003-05-25 15:11:17.000000000 +0200 @@ -58,5 +58,6 @@ void leave_room (char *room); void say_chatroom (char *room, char *message); void set_wait_port (int port); +int want_to_send(void); #endif