- rfd = (struct rset_prox_rfd *) xmalloc (sizeof(*rfd));
- logf(LOG_DEBUG,"rsprox (%s) open [%p]", ct->control->desc, rfd);
- rfd->next = info->rfd_list;
- info->rfd_list = rfd;
- rfd->info = info;
-
- rfd->more = xmalloc (sizeof(*rfd->more) * info->rset_no);
-
- rfd->buf = xmalloc(sizeof(*rfd->buf) * info->rset_no);
- for (i = 0; i < info->rset_no; i++)
- rfd->buf[i] = xmalloc (info->key_size);
-
- rfd->rfd = xmalloc(sizeof(*rfd->rfd) * info->rset_no);
- for (i = 0; i < info->rset_no; i++)
- rfd->rfd[i] = rset_open (info->rset[i], RSETF_READ);
+ rfd = rfd_create_base(ct);
+ if (rfd->priv)
+ p=(struct rset_prox_rfd *)(rfd->priv);
+ else {
+ p = (struct rset_prox_rfd *) nmem_malloc (ct->nmem,sizeof(*p));
+ rfd->priv=p;
+ p->more = nmem_malloc (ct->nmem,sizeof(*p->more) * info->rset_no);
+ p->buf = nmem_malloc(ct->nmem,sizeof(*p->buf) * info->rset_no);
+ for (i = 0; i < info->rset_no; i++)
+ p->buf[i] = nmem_malloc(ct->nmem,ct->keycontrol->key_size);
+ p->rfd = nmem_malloc(ct->nmem,sizeof(*p->rfd) * info->rset_no);
+ }
+ logf(LOG_DEBUG,"rsprox (%s) open [%p] n=%d",
+ ct->control->desc, rfd, info->rset_no);