Ejemplo n.º 1
0
void slave_main(int sock, struct sockaddr *addr) {
    char addrstr[INET_ADDRSTRLEN];
    struct sockaddr_in *addr_in = (struct sockaddr_in *)addr;
    uint32_t msgtype;
    struct strbuf msg = STRBUF_INIT;

    if (addr->sa_family != AF_INET)
        fatal("unsupported address family %d", addr->sa_family);

    if (!inet_ntop(AF_INET, &addr_in->sin_addr, addrstr, sizeof(addrstr)))
        fatalpe("inet_ntop");

    notice("accepted connection from %s", addrstr);

    setup_slave_sigs();

    while (!terminate) {
        if (ceo_receive_message(sock, &msg, &msgtype))
            break;
        handle_one_message(sock, &msg, msgtype);
    }

    notice("connection closed by peer %s", addrstr);

    strbuf_release(&msg);

    /* stuff allocated by dmaster */
    free_gss();
    free_config();
    free_fqdn();
    free_ops();
    free(prog);
}
Ejemplo n.º 2
0
int cdbb_apply(struct cdbb *a)
{
	int err = 0;

	err = cdbb_copy(a);

	err += cdbb_handle_ops(a);

	rename(a->t, a->f);

	if (err == 0)
		unlink(a->f);

	if (a->t)
		free(a->t);
	cdbb_close_read(a);
	cdbb_close_write(a);
	free_ops(a);
	return err;
}