0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-22 09:41:54 +00:00

Cleaned up sk_reallocate() and friends.

Also, removed the `if (s)' test, because I believe that as the whole
socket interface doesn't accent NULL pointers, sk_reallocate() shouldn't
be the only exception.
This commit is contained in:
Martin Mares 2004-06-05 08:56:43 +00:00
parent c6bdc78bef
commit 4da25acb0a

View File

@ -421,15 +421,38 @@ sk_next(sock *s)
return SKIP_BACK(sock, n, s->n.next); return SKIP_BACK(sock, n, s->n.next);
} }
static void
sk_alloc_bufs(sock *s)
{
if (!s->rbuf && s->rbsize)
s->rbuf = s->rbuf_alloc = xmalloc(s->rbsize);
s->rpos = s->rbuf;
if (!s->tbuf && s->tbsize)
s->tbuf = s->tbuf_alloc = xmalloc(s->tbsize);
s->tpos = s->ttx = s->tbuf;
}
static void
sk_free_bufs(sock *s)
{
if (s->rbuf_alloc)
{
xfree(s->rbuf_alloc);
s->rbuf = s->rbuf_alloc = NULL;
}
if (s->tbuf_alloc)
{
xfree(s->tbuf_alloc);
s->tbuf = s->tbuf_alloc = NULL;
}
}
static void static void
sk_free(resource *r) sk_free(resource *r)
{ {
sock *s = (sock *) r; sock *s = (sock *) r;
if (s->rbuf_alloc) sk_free_bufs(s);
xfree(s->rbuf_alloc);
if (s->tbuf_alloc)
xfree(s->tbuf_alloc);
if (s->fd >= 0) if (s->fd >= 0)
{ {
close(s->fd); close(s->fd);
@ -440,6 +463,13 @@ sk_free(resource *r)
} }
} }
void
sk_reallocate(sock *s)
{
sk_free_bufs(s);
sk_alloc_bufs(s);
}
static void static void
sk_dump(resource *r) sk_dump(resource *r)
{ {
@ -588,31 +618,6 @@ bad:
return err; return err;
} }
static void
sk_alloc_bufs(sock *s)
{
if (!s->rbuf && s->rbsize)
s->rbuf = s->rbuf_alloc = xmalloc(s->rbsize);
s->rpos = s->rbuf;
if (!s->tbuf && s->tbsize)
s->tbuf = s->tbuf_alloc = xmalloc(s->tbsize);
s->tpos = s->ttx = s->tbuf;
}
void
sk_reallocate(sock *s)
{
if(!s) return;
if (s->rbuf_alloc)
xfree(s->rbuf_alloc);
s->rbuf = NULL;
if (s->tbuf_alloc)
xfree(s->tbuf_alloc);
s->tbuf = NULL;
sk_alloc_bufs(s);
}
static void static void
sk_tcp_connected(sock *s) sk_tcp_connected(sock *s)
{ {