Add sockpushdata.
authorfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Thu, 20 Oct 2005 03:24:00 +0000 (03:24 +0000)
committerfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Thu, 20 Oct 2005 03:24:00 +0000 (03:24 +0000)
git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@390 959494ce-11ee-0310-bf91-de5d638817bd

daemon/net.c
daemon/net.h

index 6acd2d0..410da96 100644 (file)
@@ -270,6 +270,23 @@ void putsock(struct socket *sk)
     }
 }
 
+void sockpushdata(struct socket *sk, void *buf, size_t size)
+{
+    switch(sk->type)
+    {
+    case SOCK_STREAM:
+       sizebuf(&sk->inbuf.s.buf, &sk->inbuf.s.bufsize, sk->inbuf.s.datasize + size, 1, 1);
+       memmove(sk->inbuf.s.buf + size, sk->inbuf.s.buf, sk->inbuf.s.datasize);
+       memcpy(sk->inbuf.s.buf, buf, size);
+       sk->inbuf.s.datasize += size;
+       break;
+    case SOCK_DGRAM:
+       /* XXX */
+       break;
+    }
+    return;
+}
+
 void *sockgetinbuf(struct socket *sk, size_t *size)
 {
     void *buf;
index 451c398..a34b24f 100644 (file)
@@ -109,5 +109,6 @@ size_t sockgetdatalen(struct socket *sk);
 int getpublicaddr(int af, struct sockaddr **addr, socklen_t *lenbuf);
 int socksettos(struct socket *sk, int tos);
 char *formataddress(struct sockaddr *arg, socklen_t arglen);
+void sockpushdata(struct socket *sk, void *buf, size_t size);
 
 #endif