@@ -715,13 +715,13 @@ void sts_merge_request_parameters(oauth2_log_t *log, oauth2_sts_cfg_t *cfg,
715715bool sts_util_oauth_call (oauth2_log_t * log , oauth2_sts_cfg_t * cfg ,
716716 oauth2_http_call_ctx_t * ctx ,
717717 const char * token_endpoint ,
718- const oauth2_nv_list_t * params , char * * rtoken )
718+ const oauth2_nv_list_t * params , char * * rtoken ,
719+ oauth2_uint_t * status_code )
719720{
720721 bool rc = false;
721722 char * response = NULL ;
722723 json_t * result = NULL ;
723724 char * tkn = NULL ;
724- oauth2_uint_t status_code = 0 ;
725725
726726 oauth2_http_call_ctx_ssl_verify_set (
727727 log , ctx , sts_cfg_get_ssl_validation (cfg ) != 0 );
@@ -730,10 +730,10 @@ bool sts_util_oauth_call(oauth2_log_t *log, oauth2_sts_cfg_t *cfg,
730730 // oauth2_http_call_ctx_outgoing_proxy_set(log, ctx, outgoing_proxy);
731731
732732 if (oauth2_http_post_form (log , token_endpoint , params , ctx , & response ,
733- & status_code ) == false)
733+ status_code ) == false)
734734 goto end ;
735735
736- if ((status_code < 200 ) || (status_code >= 300 ))
736+ if ((* status_code < 200 ) || (* status_code >= 300 ))
737737 goto end ;
738738
739739 if (oauth2_json_decode_check_error (log , response , & result ) == false)
@@ -789,19 +789,20 @@ bool sts_util_oauth_call(oauth2_log_t *log, oauth2_sts_cfg_t *cfg,
789789}
790790
791791static bool sts_token_exchange_exec (oauth2_log_t * log , oauth2_sts_cfg_t * cfg ,
792- const char * token , char * * rtoken )
792+ const char * token , char * * rtoken ,
793+ oauth2_http_status_code_t * status_code )
793794{
794795 bool rc = false;
795796
796797 switch (sts_cfg_get_type (cfg )) {
797798 case STS_TYPE_WSTRUST :
798- rc = sts_wstrust_exec (log , cfg , token , rtoken );
799+ rc = sts_wstrust_exec (log , cfg , token , rtoken , status_code );
799800 break ;
800801 case STS_TYPE_ROPC :
801- rc = sts_ropc_exec (log , cfg , token , rtoken );
802+ rc = sts_ropc_exec (log , cfg , token , rtoken , status_code );
802803 break ;
803804 case STS_TYPE_OTX :
804- rc = sts_otx_exec (log , cfg , token , rtoken );
805+ rc = sts_otx_exec (log , cfg , token , rtoken , status_code );
805806 break ;
806807 case STS_TYPE_DISABLED :
807808 break ;
@@ -814,7 +815,7 @@ static bool sts_token_exchange_exec(oauth2_log_t *log, oauth2_sts_cfg_t *cfg,
814815}
815816
816817bool sts_handler (oauth2_log_t * log , oauth2_sts_cfg_t * cfg , char * source_token ,
817- char * * target_token )
818+ char * * target_token , oauth2_http_status_code_t * status_code )
818819{
819820 bool rc = false;
820821 char * cache_key = NULL ;
@@ -828,7 +829,8 @@ bool sts_handler(oauth2_log_t *log, oauth2_sts_cfg_t *cfg, char *source_token,
828829
829830 if (* target_token == NULL ) {
830831 if (sts_token_exchange_exec (log , cfg , source_token ,
831- target_token ) == false) {
832+ target_token ,
833+ status_code ) == false) {
832834 oauth2_error (log , "sts_util_token_exchange failed" );
833835 goto end ;
834836 }
@@ -860,7 +862,8 @@ oauth2_cfg_source_token_t *sts_accept_source_token_in_get(oauth2_log_t *log,
860862bool sts_request_handler (oauth2_log_t * log , oauth2_sts_cfg_t * cfg ,
861863 oauth2_http_request_t * request , char * * source_token ,
862864 oauth2_cfg_server_callback_funcs_t * srv_cb ,
863- void * srv_cb_ctx )
865+ void * srv_cb_ctx ,
866+ oauth2_http_status_code_t * status_code )
864867{
865868 bool rc = false;
866869 char * target_token = NULL ;
@@ -873,7 +876,7 @@ bool sts_request_handler(oauth2_log_t *log, oauth2_sts_cfg_t *cfg,
873876 if (* source_token == NULL )
874877 goto end ;
875878
876- rc = sts_handler (log , cfg , * source_token , & target_token );
879+ rc = sts_handler (log , cfg , * source_token , & target_token , status_code );
877880 if (rc == false)
878881 goto end ;
879882
0 commit comments