- for (rfdp = &info->rfd_list; *rfdp; rfdp = &(*rfdp)->next)
- if (*rfdp == rfd)
- {
- int i;
- for (i = 0; i<info->p.rset_no; i++)
- xfree ((*rfdp)->buf[i]);
- xfree ((*rfdp)->buf);
- xfree ((*rfdp)->more);
-
- for (i = 0; i<info->p.rset_no; i++)
- rset_close (info->p.rset[i], (*rfdp)->rfd[i]);
- xfree ((*rfdp)->rfd);
-
- *rfdp = (*rfdp)->next;
- xfree (rfd);
- return;
- }
- logf (LOG_FATAL, "r_close but no rfd match!");
- assert (0);
-}
-
-static void r_delete (RSET ct)
-{
- struct rset_prox_info *info = (struct rset_prox_info *) ct->buf;
- int i;
-
- assert (info->rfd_list == NULL);
- for (i = 0; i<info->p.rset_no; i++)
- rset_delete (info->p.rset[i]);
- xfree (info->p.rset);
- xfree (info);
-}
-
-static void r_rewind (RSFD rfd)
-{
- struct rset_prox_info *info = ((struct rset_prox_rfd*)rfd)->info;
- struct rset_prox_rfd *p = (struct rset_prox_rfd *) rfd;