*/
if (!treq) break;
+ rad_assert((treq->state == FR_TRUNK_REQUEST_STATE_PENDING) ||
+ (treq->state == FR_TRUNK_REQUEST_STATE_PARTIAL));
+
request = treq->request;
u = talloc_get_type_abort(treq->preq, udp_request_t);
queued = i;
if (queued == 0) return; /* No work */
+ /*
+ * Verify nothing accidentally freed the connection handle
+ */
+ (void)talloc_get_type_abort(h, udp_handle_t);
+
/*
* Send the coalesced datagrams
*/
*/
rad_assert((size_t)h->mmsgvec[i].msg_len == h->mmsgvec[i].msg_hdr.msg_iov->iov_len);
+ rad_assert(treq->state == FR_TRUNK_REQUEST_STATE_SENT);
+
request = treq->request;
u = talloc_get_type_abort(treq->preq, udp_request_t);
*/
if (!treq) break;
+ rad_assert((treq->state == FR_TRUNK_REQUEST_STATE_PENDING) ||
+ (treq->state == FR_TRUNK_REQUEST_STATE_PARTIAL));
+
request = treq->request;
u = talloc_get_type_abort(treq->preq, udp_request_t);
queued = i;
if (queued == 0) return; /* No work */
+ /*
+ * Verify nothing accidentally freed the connection handle
+ */
+ (void)talloc_get_type_abort(h, udp_handle_t);
+
sent = sendmmsg(h->fd, h->mmsgvec, queued, 0);
if (sent < 0) { /* Error means no messages were sent */
sent = 0;