<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7638.1">
<TITLE>Case statement error</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">Hi All. I have some code in an “sql” policy</FONT></SPAN><SPAN LANG="en-gb"><FONT FACE="Calibri">:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">sql_check_user_present {</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">  update control {</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">    Tmp-String-0 := "%{sql_pwifi:SELECT COUNT(*) from voucher v left join state s on v.id=s.voucher_id where v.id=s.voucher_id and v.code='%{User-Name}' and (s.state='Inactive' or s.state='Active'</FONT></SPAN><SPAN LANG="en-gb"><FONT FACE="Calibri">)}”</FONT></SPAN><SPAN LANG="en-gb"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">  }</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">  switch "%{control:Tmp-String-0}" {</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">    case "0" {</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">      update control {</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">        User-RejectInformation := "Sorry, that voucher code is invalid or has expired."</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">        Debug-RejectInformation := "Voucher code not present in database table, or voucher expired"</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">      }</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">      reject</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">    }</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">    case "1" {</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">      noop</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">    }</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">    case {</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">      # voucher has multiple table entries, oooh errr.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">      update control {</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">        User-RejectInformation := "Sorry, there has been an error. Please contact IT."</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">        Debug-RejectInformation := "Multiple voucher codes the same, or database error - SQL count not = 0 or 1. This should never happen due to primary key constraint!"</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">      }</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">      reject</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">    }</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">  }</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">}</FONT></SPAN><SPAN LANG="en-gb"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">This works fine in</FONT></SPAN><SPAN LANG="en-gb"> <FONT FACE="Calibri">3.0,</FONT></SPAN><SPAN LANG="en-gb"> <FONT FACE="Calibri">git version</FONT></SPAN><SPAN LANG="en-gb"> <FONT FACE="Calibri">#f66d411</FONT></SPAN><SPAN LANG="en-gb"><FONT FACE="Calibri">, but I have a problem with a regex related thing causing a segfault in that version and wouldn’t mind trying the latest version</FONT></SPAN><SPAN LANG="en-gb"><FONT FACE="Calibri"> to see if it’s fixed.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">Trying version</FONT></SPAN><SPAN LANG="en-gb"> <FONT FACE="Calibri">#d166290</FONT></SPAN><SPAN LANG="en-gb"><FONT FACE="Calibri"> results in</FONT></SPAN><SPAN LANG="en-gb"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri"> </FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">/usr/local/etc/raddb/policy.d/sql[6]: "case" statements may only appear within a "switch" section</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">/usr/local/etc/raddb/policy.d/sql[6]: Failed to parse "case" subsection.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">/usr/local/etc/raddb/policy.d/sql[5]: Failed to parse "switch" subsection.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">/usr/local/etc/raddb/sites-enabled/default[220]: Errors parsing authorize section.</FONT></SPAN><SPAN LANG="en-gb"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">Do I need to change how the switch statement works?</FONT></SPAN><SPAN LANG="en-gb"><FONT FACE="Calibri"> The unlang page doesn’t seem to have changed as far as I can tell.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">Thanks</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">Andy</FONT></SPAN><SPAN LANG="en-gb"></SPAN></P>

</BODY>
</HTML>