Forum Discussion

hui_37443's avatar
hui_37443
Icon for Nimbostratus rankNimbostratus
Feb 24, 2010

auth_result fired twice?

We have implemented an iRule to do OCSP check, based on the prize winner http://devcentral.f5.com/Default.aspx?tabid=108. When it encounters an error, it doesn't resume the suspended SSL::handshake.

 

when AUTH_RESULT {

 

if {[info exists tmm_auth_ssl_ocsp_sid] and $tmm_auth_ssl_ocsp_sid eq [AUTH::last_event_session_id]} {

 

set tmm_auth_status [AUTH::status]

 

 

log local0.debug "authentication status of round 1 $tmm_auth_status"

 

 

if {$tmm_auth_status eq 0} {

 

Success

 

log local0.debug "OCSP verfication succeeded"

 

SSL::handshake resume

 

lset ssl_array 1 "auth_success"

 

} elseif {$tmm_auth_status eq 1} {

 

Failure

 

log local0.debug "OCSP verfication failed"

 

SSL::handshake resume

 

lset ssl_array 1 "auth_failure"

 

} elseif {$tmm_auth_status eq -1} {

 

Error

 

log local0.debug "OCSP verfication error"

 

lset ssl_array 1 "auth_failure"

 

}

 

else {

 

Not authorised

 

log $tmm_auth_status

 

log local0.debug "OCSP verfication not authorised"

 

reject

 

}

 

 

session add ssl "$id any pool" $ssl_array 21600

 

}

 

}

 

 

From the client browser, we can see the error page shown promptly. However, in the log there is an TCL parsing error:

 

 

Feb 22 17:35:10 tmm tmm[1786]: 01220001:3: TCL error: cbz_ocsp_action - can't read "ssl_array": no such variable while executing "lset ssl_array 1 "auth_failure"

 

 

From the timestamp, it is more a couple of minutes later than the OCSP check. Looks like to me the event AUTH_RESULT is fired twice. Once right after the OCSP check, and the other a while later.

 

 

Not sure whether I need to resume the SSL::handshake?

12 Replies