From: Alan T. DeKok Date: Wed, 22 Apr 2009 12:42:13 +0000 (+0200) Subject: Don't lose tags X-Git-Tag: release_2_1_7~198 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=088f7e697913fd9f4de3877927300c1d222e76be;p=thirdparty%2Ffreeradius-server.git Don't lose tags --- diff --git a/src/modules/rlm_perl/rlm_perl.c b/src/modules/rlm_perl/rlm_perl.c index 8c44bca142c..1df206be5e7 100644 --- a/src/modules/rlm_perl/rlm_perl.c +++ b/src/modules/rlm_perl/rlm_perl.c @@ -513,6 +513,7 @@ static void perl_store_vps(VALUE_PAIR *vp, HV *rad_hv) { VALUE_PAIR *nvp, *vpa, *vpn; AV *av; + char namebuf[256], *name; char buffer[1024]; int attr, len; @@ -520,8 +521,10 @@ static void perl_store_vps(VALUE_PAIR *vp, HV *rad_hv) nvp = paircopy(vp); while (nvp != NULL) { + name = nvp->name; attr = nvp->attribute; vpa = paircopy2(nvp,attr); + if (vpa->next) { av = newAV(); vpn = vpa; @@ -534,10 +537,17 @@ static void perl_store_vps(VALUE_PAIR *vp, HV *rad_hv) hv_store(rad_hv, nvp->name, strlen(nvp->name), newRV_noinc((SV *) av), 0); } else { + if ((vpa->flags.has_tag) && + (vpa->flags.tag != 0)) { + snprintf(namebuf, sizeof(namebuf), "%s:%d", + nvp->name, nvp->flags.tag); + name = namebuf; + } + len = vp_prints_value(buffer, sizeof(buffer), - vpa, FALSE); - hv_store(rad_hv, vpa->name, strlen(vpa->name), - newSVpv(buffer, len), 0); + vpa, FALSE); + hv_store(rad_hv, name, strlen(name), + newSVpv(buffer, len), 0); } pairfree(&vpa);