return NULL;
}
+struct request *newrqref(struct request *rq) {
+ rq->refcount++;
+ return rq;
+}
+
void freerq(struct request *rq) {
if (!rq)
return;
radmsg_free(rq->msg);
rq->msg = msg;
debug(DBG_DBG, "respond: sending %s to %s", radmsgtype2string(msg->code), rq->from->conf->host);
- rq->refcount++;
- sendreply(rq);
+ sendreply(newrqref(rq));
}
struct clsrvconf *choosesrvconf(struct list *srvconfs) {
if (now.tv_sec - r->created.tv_sec < r->from->conf->dupinterval) {
if (r->replybuf) {
debug(DBG_INFO, "addclientrq: already sent reply to request with id %d from %s, resending", rq->rqid, addr2string(r->from->addr));
- r->refcount++;
- sendreply(r);
+ sendreply(newrqref(r));
} else
debug(DBG_INFO, "addclientrq: already got request with id %d from %s, ignoring", rq->rqid, addr2string(r->from->addr));
return 0;
}
freerq(r);
}
- rq->refcount++;
- rq->from->rqs[rq->rqid] = rq;
+ rq->from->rqs[rq->rqid] = newrqref(rq);
return 1;
}
debug(DBG_INFO, "replyh: passing reply to client %s", from->conf->name);
radmsg_free(rqout->rq->msg);
rqout->rq->msg = msg;
- rqout->rq->refcount++;
- sendreply(rqout->rq);
+ sendreply(newrqref(rqout->rq));
freerqoutdata(rqout);
pthread_mutex_unlock(rqout->lock);
return;