From 336539c2c447adabe67af86007b630c5f17bfab1 Mon Sep 17 00:00:00 2001 From: fredrik Date: Thu, 20 Oct 2005 03:24:00 +0000 Subject: [PATCH] Add sockpushdata. git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@390 959494ce-11ee-0310-bf91-de5d638817bd --- daemon/net.c | 17 +++++++++++++++++ daemon/net.h | 1 + 2 files changed, 18 insertions(+) diff --git a/daemon/net.c b/daemon/net.c index 6acd2d0..410da96 100644 --- a/daemon/net.c +++ b/daemon/net.c @@ -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; diff --git a/daemon/net.h b/daemon/net.h index 451c398..a34b24f 100644 --- a/daemon/net.h +++ b/daemon/net.h @@ -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 -- 2.11.0