mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 17:51:53 +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:
parent
c6bdc78bef
commit
4da25acb0a
@ -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)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user