static int fserve_move_listener (client_t *client) { fh_node *fh = client->shared_data; int ret = 0; fbinfo f; memset (&f, 0, sizeof (f)); if (client->refbuf && client->pos < client->refbuf->len) client->flags |= CLIENT_HAS_INTRO_CONTENT; // treat it as a partial write needing completion else client_set_queue (client, NULL); f.flags = fh->finfo.flags & (~FS_DELETE); f.limit = fh->finfo.limit; f.mount = fh->finfo.fallback; f.type = fh->finfo.type; if (move_listener (client, &f) < 0) { WARN1 ("moved failed, terminating listener on %s", fh->finfo.mount); ret = -1; } else { DEBUG3 ("moved %s from %s (%d)", client->connection.ip, fh->finfo.mount, fh->finfo.flags); ret = 0; remove_from_fh (fh, client); } return ret; }
static int fserve_move_listener (client_t *client) { fh_node *fh = client->shared_data; int ret = 0; fbinfo f; memset (&f, 0, sizeof (f)); client_set_queue (client, NULL); f.flags = fh->finfo.flags & (~FS_DELETE); f.limit = fh->finfo.limit; f.mount = fh->finfo.fallback; f.type = fh->finfo.type; if (move_listener (client, &f) < 0) { WARN1 ("moved failed, terminating listener on %s", fh->finfo.mount); ret = -1; } else { DEBUG3 ("moved %s from %s (%d)", client->connection.ip, fh->finfo.mount, fh->finfo.flags); ret = 0; remove_from_fh (fh, client); } return ret; }