src/server/util/io.c

changeset 80
0de4a90979e1
parent 71
069c152f6272
child 82
740cfd9dd443
--- a/src/server/util/io.c	Wed Jun 26 15:09:54 2013 +0200
+++ b/src/server/util/io.c	Wed Jun 26 17:14:45 2013 +0200
@@ -47,6 +47,8 @@
     system_write,
     system_writev,
     system_read,
+    NULL,
+    NULL,
     NULL
 };
 
@@ -54,7 +56,9 @@
     (io_write_f)net_stream_write,
     (io_writev_f)net_stream_writev,
     (io_read_f)net_stream_read,
-    (io_sendfile_f)net_stream_sendfile
+    (io_sendfile_f)net_stream_sendfile,
+    (io_close_f)net_stream_close,
+    (io_finish_f)net_stream_finish
 };
 
 
@@ -174,6 +178,16 @@
     return ret;
 }
 
+void net_stream_close(NetIOStream *st) {
+    close(st->fd);
+}
+
+void net_stream_finish(NetIOStream *st) {
+    if(st->chunked_enc) {
+        write(st->fd, "0\r\n\r\n", 5);
+    }
+}
+
 
 ssize_t net_read(SYS_NETFD fd, void *buf, size_t nbytes) {
     ssize_t r = ((IOStream*)fd)->read(fd, buf, nbytes);
@@ -283,6 +297,14 @@
     return IO_ERROR;
 }
 
+void net_close(SYS_NETFD fd) {
+    ((IOStream*)fd)->close(fd);
+}
+
+void net_finish(SYS_NETFD fd) {
+    ((IOStream*)fd)->finish(fd);
+}
+
 
 /* iovec buffer */
 iovec_buf_t *iovec_buf_create(pool_handle_t *pool) {

mercurial