From ccb2e4006d5b890cbcf1d32e255b689192d43240 Mon Sep 17 00:00:00 2001
From: Přemysl Janouch
Date: Sat, 12 Jul 2014 23:13:13 +0200
Subject: Implement irc_try_write()
---
src/kike.c | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/src/kike.c b/src/kike.c
index 92d0f93..7c151e4 100644
--- a/src/kike.c
+++ b/src/kike.c
@@ -456,7 +456,27 @@ irc_try_read_ssl (struct connection *conn)
static bool
irc_try_write (struct connection *conn)
{
- // TODO
+ struct str *buf = &conn->write_buffer;
+ ssize_t n_written;
+
+ while (buf->len)
+ {
+ n_written = send (conn->socket_fd, buf->str, buf->len, 0);
+ if (n_written >= 0)
+ {
+ str_remove_slice (buf, 0, n_written);
+ continue;
+ }
+
+ if (errno == EAGAIN)
+ return true;
+ if (errno == EINTR)
+ continue;
+
+ print_debug ("%s: %s: %s", __func__, "send", strerror (errno));
+ connection_kill (conn, strerror (errno));
+ return false;
+ }
return true;
}
--
cgit v1.2.3-70-g09d2