}
static NTSTATUS smbd_smb2_advance_send_queue(struct smbXsrv_connection *xconn,
- struct smbd_smb2_send_queue *e,
+ struct smbd_smb2_send_queue **_e,
size_t n)
{
+ struct smbd_smb2_send_queue *e = *_e;
bool ok;
xconn->ack.unacked_bytes += n;
DLIST_REMOVE(xconn->smb2.send_queue, e);
if (e->ack.req == NULL) {
+ *_e = NULL;
talloc_free(e->mem_ctx);
return NT_STATUS_OK;
}
return status;
}
- status = smbd_smb2_advance_send_queue(xconn, e, ret);
+ status = smbd_smb2_advance_send_queue(xconn, &e, ret);
if (NT_STATUS_EQUAL(status, NT_STATUS_RETRY)) {
/* retry later */
TEVENT_FD_WRITEABLE(xconn->transport.fde);