[ekg2-commit] r4202 - trunk/plugins/icq: trunk/plugins/icq/icq.c

SVN commit svn w toxygen.net
Czw, 7 Sie 2008, 08:37:53 CEST


Author: darkjames
Date: 2008-08-07 08:37:53 +0200 (Thu, 07 Aug 2008)
New Revision: 4202

Modified:
   trunk/plugins/icq/icq.c
Log:
fix icq_sent_pkt()


Modified: trunk/plugins/icq/icq.c
===================================================================
--- trunk/plugins/icq/icq.c	2008-08-06 20:53:43 UTC (rev 4201)
+++ trunk/plugins/icq/icq.c	2008-08-07 06:37:53 UTC (rev 4202)
@@ -50,6 +50,9 @@
 #define ICQ_HUB_SERVER "login.icq.com"
 #define ICQ_HUB_PORT	5190
 
+static int icq_theme_init();
+PLUGIN_DEFINE(icq, PLUGIN_PROTOCOL, icq_theme_init);
+
 int icq_send_pkt(session_t *s, string_t buf) {
 	icq_private_t *j;
 	watch_t *w;
@@ -67,10 +70,15 @@
 	for (l = watches; l; l = l->next) {
 		watch_t *w = l->data;
 
-		if (w && w->is_session && w->data == s && w->type == WATCH_WRITE_LINE && w->fd == fd) {
+		if (w && w->plugin == &icq_plugin && w->is_session && w->data == s && w->type == WATCH_WRITE && w->buf && w->fd == fd) {
+			int ready = (w->buf->len == 0);
+
 			string_append_raw(w->buf, buf->str, buf->len);
 			string_free(buf, 1);
-			return 1;
+
+			if (ready)
+				watch_handle_write(w);
+			return !ready;
 		}
 	}
 
@@ -389,9 +397,6 @@
 	return uin;
 }
 
-static int icq_theme_init();
-PLUGIN_DEFINE(icq, PLUGIN_PROTOCOL, icq_theme_init);
-
 static QUERY(icq_session_init) {
 	char		*session = *(va_arg(ap, char**));
 	session_t	*s = session_find(session);



Więcej informacji o liście dyskusyjnej ekg2-commit