summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
0eb1ce2)
Currently, we remove this fd from the close-on-fork list in
udp_close_target() and re-add it in udp_init_session(). This is wrong
because we want the fd being closed in the command handlers also if
the child process for the command is spawned while the udp sender
is inactive.
So add/delete the fd when the udp target is added/removed rather than
on a per session basis.
static void udp_close_target(struct sender_client *sc)
{
if (sc->cq != NULL) {
static void udp_close_target(struct sender_client *sc)
{
if (sc->cq != NULL) {
- del_close_on_fork_list(sc->fd);
cq_destroy(sc->cq);
sc->cq = NULL;
}
cq_destroy(sc->cq);
sc->cq = NULL;
}
PARA_NOTICE_LOG("deleting %s (%s) from list\n", sc->name, msg);
udp_close_target(sc);
close(sc->fd);
PARA_NOTICE_LOG("deleting %s (%s) from list\n", sc->name, msg);
udp_close_target(sc);
close(sc->fd);
+ del_close_on_fork_list(sc->fd);
vss_del_fec_client(ut->fc);
list_del(&sc->node);
free(sc->name);
vss_del_fec_client(ut->fc);
list_del(&sc->node);
free(sc->name);
{
if (sc->cq == NULL) {
sc->cq = cq_new(UDP_CQ_BYTES);
{
if (sc->cq == NULL) {
sc->cq = cq_new(UDP_CQ_BYTES);
- add_close_on_fork_list(sc->fd);
PARA_NOTICE_LOG("sending to udp %s\n", sc->name);
}
}
PARA_NOTICE_LOG("sending to udp %s\n", sc->name);
}
}
PARA_INFO_LOG("adding to target list (%s)\n", sc->name);
ut->fc = vss_add_fec_client(sc, &ut->fcp);
para_list_add(&sc->node, &targets);
PARA_INFO_LOG("adding to target list (%s)\n", sc->name);
ut->fc = vss_add_fec_client(sc, &ut->fcp);
para_list_add(&sc->node, &targets);
+ add_close_on_fork_list(sc->fd);
return 1;
err:
if (sc->fd >= 0)
return 1;
err:
if (sc->fd >= 0)