Beispiel #1
0
void IOBuf_destroy(IOBuf *buf)
{
    if(buf) {
        IOBuf_close(buf); // ignore return

        if(buf->use_ssl) {
            ssl_free(&buf->ssl);
        }
        
        if(buf->buf) free(buf->buf);
        free(buf);
    }
}
Beispiel #2
0
int Register_disconnect(int fd)
{
    check(fd < MAX_REGISTERED_FDS, "FD given to register is greater than max.");
    check(fd >= 0, "Invalid FD given for disconnect.");

    Registration *reg = darray_get(REGISTRATIONS, fd);

    check_debug(Register_valid(reg), "Attempt to unregister FD %d which is already gone.", fd);
    check(reg->fd == fd, "Asked to disconnect fd %d but register had %d", fd, reg->fd);

    if(IOBuf_close(reg->data->iob) != 0) {
        debug("Failed to close IOBuffer, probably SSL error.");
    }

    Register_clear(reg);

    // tracking the number of things we're processing
    NUM_REG_FD--;
    return 0;

error:
    fdclose(fd);
    return -1;
}