From 76f797a263a7a7cf70c6751ffa5cc340541c4805 Mon Sep 17 00:00:00 2001 From: ian Date: Sat, 17 May 2008 18:31:13 +0000 Subject: [PATCH] manage nmra retrans properly --- hostside/commands.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hostside/commands.c b/hostside/commands.c index 7f1ef8d..244cc87 100644 --- a/hostside/commands.c +++ b/hostside/commands.c @@ -13,7 +13,7 @@ typedef struct ManualRetransmitNode ManualRetransmitNode; struct ManualRetransmitNode { - ManualRetransmitNode *back, *next; + struct { ManualRetransmitNode *back, *next; } others; char *name; int lname; RetransmitUrgentNode rn; @@ -129,7 +129,7 @@ static int cmd_nmra(ParseState *ps, const CmdInfo *ci) { mrn && !(mrn->lname == lmrname && !memcmp(mrn->name, mrname, lmrname)); - mrn= mrn->next); + mrn= mrn->others.next); if (mrn) { retransmit_urgent_cancel(&mrn->rn); } else { @@ -137,6 +137,7 @@ static int cmd_nmra(ParseState *ps, const CmdInfo *ci) { mrn->name= mmalloc(lmrname); memcpy(mrn->name, mrname, lmrname); mrn->lname= lmrname; + DLIST2_APPEND(mrns,mrn,others); } } @@ -144,6 +145,7 @@ static int cmd_nmra(ParseState *ps, const CmdInfo *ci) { if (!retrans) { return badcmd(ps,"nmra must have slot to cancel or data to send"); } + DLIST2_REMOVE(mrns,mrn,others); free(mrn->name); free(mrn); return 0; @@ -295,7 +297,7 @@ static int cmd_invert(ParseState *ps, const CmdInfo *ci) { const CmdInfo toplevel_cmds[]= { { "!pic", cmd_pic, CIXF_ANYSTA|CIXF_FORCE }, - { "!nmra", cmd_nmra, }, + { "!nmra", cmd_nmra, CIXF_ANYSTA }, { "noop", cmd_noop, CIXF_ANYSTA }, { "movpos", cmd_movpos }, //{ "autopoint", cmd_autopoint }, -- 2.30.2