]> jfr.im git - irc/rqf/shadowircd.git/commitdiff
linebuf_flush(): use fde_t's.
authorWilliam Pitcock <redacted>
Sat, 22 Dec 2007 22:28:05 +0000 (16:28 -0600)
committerWilliam Pitcock <redacted>
Sat, 22 Dec 2007 22:28:05 +0000 (16:28 -0600)
libcharybdis/linebuf.c
libcharybdis/linebuf.h
src/send.c

index 8ac6a31fe01e5b4923919ab5a70bd641f40f171a..a532395f2f05271af52d393615e9cf896851244f 100644 (file)
@@ -623,7 +623,7 @@ linebuf_putmsg(buf_head_t * bufhead, const char *format, va_list * va_args,
  */
 
 int
-linebuf_flush(int fd, buf_head_t * bufhead)
+linebuf_flush(fde_t *fd, buf_head_t * bufhead)
 {
        buf_line_t *bufline;
        int retval;
@@ -652,7 +652,7 @@ linebuf_flush(int fd, buf_head_t * bufhead)
        }
 
        /* Now, try writing data */
-       retval = send(fd, bufline->buf + bufhead->writeofs, bufline->len - bufhead->writeofs, 0);
+       retval = fd->write_impl(fd, bufline->buf + bufhead->writeofs, bufline->len - bufhead->writeofs);
 
        if(retval <= 0)
                return retval;
index 5444fe3731b2962b3452a6f23648ca182d15c89a..df84dbc4698d0c79da55a62b85fc50aaef590f5e 100644 (file)
@@ -28,6 +28,7 @@
 #define __LINEBUF_H__
 
 #include "tools.h"
+#include "commio.h"
 
 /* How big we want a buffer - 510 data bytes, plus space for a '\0' */
 #define BUF_DATA_SIZE          511
@@ -80,7 +81,7 @@ extern void linebuf_donebuf(buf_head_t *);
 extern int linebuf_parse(buf_head_t *, char *, int, int);
 extern int linebuf_get(buf_head_t *, char *, int, int, int);
 extern void linebuf_putmsg(buf_head_t *, const char *, va_list *, const char *, ...);
-extern int linebuf_flush(int, buf_head_t *);
+extern int linebuf_flush(fde_t *, buf_head_t *);
 extern void linebuf_attach(buf_head_t *, buf_head_t *);
 extern void count_linebuf_memory(size_t *, size_t *);
 #endif
index bd4adea8e457449c5efccd490a294a6e57ac5c74..7c122977ad20a438b3b8c904e7ca404ecf8e9b71 100644 (file)
@@ -168,6 +168,10 @@ send_queued_write(int fd, void *data)
 #ifdef USE_IODEBUG_HOOKS
        hook_data_int hd;
 #endif
+       fde_t *F = comm_lookup_fd(to->localClient->fd);
+       if (!F)
+               return;
+
        /* cant write anything to a dead socket. */
        if(IsIOError(to))
                return;
@@ -182,7 +186,7 @@ send_queued_write(int fd, void *data)
        if(linebuf_len(&to->localClient->buf_sendq))
        {
                while ((retlen =
-                       linebuf_flush(to->localClient->fd, &to->localClient->buf_sendq)) > 0)
+                       linebuf_flush(F, &to->localClient->buf_sendq)) > 0)
                {
                        /* We have some data written .. update counters */
 #ifdef USE_IODEBUG_HOOKS