ASSERT(con->fs && !con->fs_num && !con->fs_off);
static int http__try_encoded_content(struct Con *con, Httpd_req_data *req,                                     const struct stat64 *req_f_stat,                                     Vstr_base *fname,                                     const char *zip_ext, size_t zip_len){  const char *fname_cstr = NULL;  int fd = -1;  int ret = FALSE;  int open_flags = O_NONBLOCK;    if (req->policy->use_noatime)    open_flags |= O_NOATIME;      vstr_add_cstr_ptr(fname, fname->len, zip_ext);  fname_cstr = vstr_export_cstr_ptr(fname, 1, fname->len);    if (fname->conf->malloc_bad)    vlg_warn(vlg, "Failed to export cstr for '%s'\n", zip_ext);  else if ((fd = io__open(fname_cstr, open_flags)) == -1)    vstr_sc_reduce(fname, 1, fname->len, zip_len);  else  {    struct stat64 f_stat[1];        if (fstat64(fd, f_stat) == -1)      vlg_warn(vlg, "fstat: %m\n");    else if ((req->policy->use_public_only && !(f_stat->st_mode & S_IROTH)) ||             (S_ISDIR(f_stat->st_mode)) || (!S_ISREG(f_stat->st_mode)) ||             (req_f_stat->st_mtime >  f_stat->st_mtime) ||             !f_stat->st_size || /* zero sized compressed files aren't valid */             (req_f_stat->st_size  <= f_stat->st_size))    { /* ignore the encoded version */ }    else    {      ASSERT(con->fs && !con->fs_num && !con->fs_off);            /* swap, close the old fd (later) and use the new */      SWAP_TYPE(con->fs->fd, fd, int);            ASSERT(con->fs->len == (uintmax_t)req_f_stat->st_size);      /* _only_ copy the new size over, mtime etc. is from the original file */      con->fs->len = req->f_stat->st_size = f_stat->st_size;      req->encoded_mtime = f_stat->st_mtime;      ret = TRUE;    }    close(fd);  }  return (ret);}  