rp_invoke_filter_conn

 rp_invoke_filter_conn

Defined in

Partial Call Graph (max 5 caller/called nodes):
%3 rp_invoke_filter rp_invoke_filter (private) rp_invoke_filter_conn rp_invoke_filter_conn rp_invoke_filter->rp_invoke_filter_conn ad_try ad_try (public) rp_invoke_filter_conn->ad_try ds_add ds_add (public) rp_invoke_filter_conn->ds_add rp_debug rp_debug (private) rp_invoke_filter_conn->rp_debug rp_report_error rp_report_error (private) rp_invoke_filter_conn->rp_report_error

Testcases:
No testcase defined.
Source code:
    set startclicks [clock clicks -microseconds]
    lassign $filter_info filter_index debug_p arg_count proc arg

    rp_debug -debug $debug_p "Invoking $why filter $proc"

    switch -- $arg_count {
        0 { set cmd $proc }
        1 { set cmd [list $proc $why] }
        2 { set cmd [list $proc $conn $why] }
        default { set cmd [list $proc $conn $arg $why] }
    }

    set errno 0
    ad_try -auto_abort=false {
        {*}$cmd
    } trap {AD EXCEPTION ad_script_abort} {r} {
        #
        # no need to propagate the exception
        #
        set result filter_return
    } on error {errMsg} {
        set errno 1
    } on ok {r} {
        set result $r
    }

    if { $errno == 1 } {
        # Uh-oh - an error occurred.
        ds_add rp [list filter [list $why [ns_conn method] [ns_conn url] $proc $arg]  $startclicks [clock clicks -microseconds] "error" $::errorInfo]
        # make sure you report catching the error!
        set error_msg "result $errMsg filter $proc for [ns_conn request] errorInfo is $::errorInfo"
        rp_debug $error_msg
        ns_log error "rp_invoke_filter: $error_msg"
        rp_report_error
        set result filter_return

    } elseif {$result ni {"filter_ok" "filter_break" "filter_return"} } {
        set error_msg "error in filter $proc for [ns_conn request]. Filter returned invalid result \"$result\""
        ds_add rp [list filter [list $why [ns_conn method] [ns_conn url] $proc $arg]  $startclicks [clock clicks -microseconds] "error" $error_msg]
        # report the bad filter_return message
        rp_debug -debug t -ns_log_level error $error_msg
        rp_report_error -message $error_msg
        ns_log error "rp_invoke_filter: $error_msg"
        set result filter_return
    } else {
        ds_add rp [list filter [list $why [ns_conn method] [ns_conn url] $proc $arg]  $startclicks [clock clicks -microseconds] $result]
    }

    rp_debug -debug $debug_p "Done invoking $why filter $proc (returning $result)"
    return $result
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: