aboutsummaryrefslogtreecommitdiffstats
path: root/src/libskabus/skabus_pub_end.c
blob: 579e83e8bf6fc70218b1fca0ee59cb521d0cc63e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/* ISC license. */

#include <skalibs/alloc.h>
#include <skalibs/djbunix.h>
#include <skalibs/genalloc.h>
#include <skalibs/skaclient.h>

#include <skabus/pub.h>

static void skabus_pub_cltinfo_free (skabus_pub_cltinfo_t *p)
{
  fd_close(p->fd) ;
  if (p->nfds)
  {
    for (size_t i = 0 ; i < p->nfds ; i++) fd_close(p->fds[i]) ;
    alloc_free(p->fds) ;
  }
}

void skabus_pub_end (skabus_pub_t *a)
{
  skaclient_end(&a->connection) ;
  genalloc_deepfree(skabus_pub_cltinfo_t, &a->info, &skabus_pub_cltinfo_free) ;
  a->head = 0 ;
}