int boz_connect_release(const boz_connect_t id) {
    boz_connect_internal_t *p=NULL;

    BOZ_CONNECT_EMPIRIC_BAD_ID_TEST

    p = GENSETDYN_P(boz_connect_internal_t, &boz_connect_g.storage, id);
    if(p->id != id)
        return (errno=ENOMSG,-1);
        
    bufalloc_free(&p->d_out);
    free(p->b_in);
    if(fcntl(p->params.fd, F_GETFD)>0)
        close(p->params.fd);
    p->b_in=0;
    (*p) = boz_connect_internal_zero;

    {
        iter_max_stuff_t stuff = { 0 };
        gensetdyn_iter(&boz_connect_g.storage, iter_max, &stuff);
        boz_connect_g.max=stuff.max;
    }

    gensetdyn_delete(&boz_connect_g.storage, id);

    return (errno=0,0);
}
Exemple #2
0
void skaclient3_end (skaclient3_t_ref a)
{
  skaclient_end(&a->sync) ;
  skaclientin_end(&a->asyncin) ;
  {
    register int e = errno ;
    fd_close(bufalloc_fd(&a->asyncout)) ;
    errno = e ;
  }
  bufalloc_free(&a->asyncout) ;
}
void skaclient_free (skaclient_t_ref a)
{
  bufalloc_free(&a->out) ;
  skaclientin_free(&a->in) ;
  *a = skaclient_zero ;
}