uint32_t max_packet_size; //!< Our max packet size. may be different from the parent.
int fd; //!< File descriptor.
- int active_requests; //!< number of active requests handled by this connection
-
fr_ipaddr_t dst_ipaddr; //!< IP of the home server. stupid 'const' issues.
uint16_t dst_port; //!< Port of the home server.
fr_ipaddr_t src_ipaddr; //!< Our source IP.
*/
if ((fr_heap_num_elements(c->queued) == 0) &&
(FR_DLIST_FIRST(c->sent) == NULL)) {
- rad_assert(c->active_requests == 0);
break;
}
(void) fr_heap_insert(c->queued, u);
u->state = PACKET_STATE_QUEUED;
- c->active_requests++;
if (!c->pending) fd_active(c);
return;
}
case PACKET_STATE_QUEUED:
(void) fr_heap_extract(c->queued, u);
- rad_assert(c->active_requests > 0);
- c->active_requests--;
break;
case PACKET_STATE_SENT:
fr_dlist_remove(&u->entry);
- rad_assert(c->active_requests > 0);
- c->active_requests--;
break;
default:
rad_assert(u->state == PACKET_STATE_SENT);
fr_dlist_remove(&u->entry);
u->state = PACKET_STATE_INIT;
- rad_assert(c->active_requests > 0);
- c->active_requests--;
} else {
/*
case PACKET_STATE_QUEUED:
(void) fr_heap_extract(u->c->queued, u);
- rad_assert(u->c->active_requests > 0);
- u->c->active_requests--;
break;
case PACKET_STATE_SENT:
fr_dlist_remove(&u->entry);
- rad_assert(u->c->active_requests > 0);
- u->c->active_requests--;
break;
default:
rad_assert(u->state == PACKET_STATE_SENT);
rad_assert(u->c == c);
- rad_assert(c->active_requests > 0);
- c->active_requests--;
u->c = NULL;
/*
while ((u = fr_heap_pop(c->queued)) != NULL) {
rad_assert(u->state == PACKET_STATE_QUEUED);
rad_assert(u->c == c);
- rad_assert(c->active_requests > 0);
- c->active_requests--;
u->c = NULL;
u->rr = NULL;
t->pending = true;
}
- rad_assert(c->active_requests == 0);
switch (c->state) {
default:
(u->state == PACKET_STATE_WRITE));
(void) fr_heap_insert(c->queued, u);
u->state = PACKET_STATE_QUEUED;
- c->active_requests++;
if (!c->pending) fd_active(c);