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.
}
static void
-sk_free(resource *r)
+sk_alloc_bufs(sock *s)
{
- sock *s = (sock *) r;
+ 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);
+ {
+ xfree(s->rbuf_alloc);
+ s->rbuf = s->rbuf_alloc = NULL;
+ }
if (s->tbuf_alloc)
- xfree(s->tbuf_alloc);
+ {
+ xfree(s->tbuf_alloc);
+ s->tbuf = s->tbuf_alloc = NULL;
+ }
+}
+
+static void
+sk_free(resource *r)
+{
+ sock *s = (sock *) r;
+
+ sk_free_bufs(s);
if (s->fd >= 0)
{
close(s->fd);
}
}
+void
+sk_reallocate(sock *s)
+{
+ sk_free_bufs(s);
+ sk_alloc_bufs(s);
+}
+
static void
sk_dump(resource *r)
{
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
sk_tcp_connected(sock *s)
{