]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
allow for setting reply:Packet-Type
authorAlan T. DeKok <aland@freeradius.org>
Thu, 29 Jun 2017 13:13:28 +0000 (09:13 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Thu, 29 Jun 2017 13:43:09 +0000 (09:43 -0400)
src/modules/proto_radius/proto_radius_auth.c
src/modules/proto_radius/proto_radius_status.c

index b02c7684fe41954f69d9e9b0120cf6c1f4e1f990..eccecc593b3e0d05ac4e2f549499dfbb0e52ce9d 100644 (file)
@@ -230,6 +230,16 @@ static fr_io_final_t mod_process(REQUEST *request, UNUSED fr_io_action_t action)
                                goto setup_send;
                        }
 
+                       /*
+                        *      Allow for over-ride of reply code.
+                        */
+                       vp = fr_pair_find_by_num(request->reply->vps, 0, FR_PACKET_TYPE, TAG_ANY);
+                       if (vp) {
+                               request->reply->code = vp->vp_uint32;
+                               goto setup_send;
+                       }
+
+
                        REDEBUG2("No Auth-Type available: rejecting the user.");
                        request->reply->code = FR_CODE_ACCESS_REJECT;
                        goto setup_send;
@@ -348,13 +358,7 @@ static fr_io_final_t mod_process(REQUEST *request, UNUSED fr_io_action_t action)
                 *      Allow for over-ride of reply code.
                 */
                vp = fr_pair_find_by_num(request->reply->vps, 0, FR_PACKET_TYPE, TAG_ANY);
-               if (vp) {
-                       if (vp->vp_uint32 == 256) {
-                               request->reply->code = 0;
-                       } else {
-                               request->reply->code = vp->vp_uint32;
-                       }
-               }
+               if (vp) request->reply->code = vp->vp_uint32;
 
                if (request->reply->code == FR_CODE_ACCESS_ACCEPT) {
                        if ((vp = fr_pair_find_by_num(request->packet->vps, 0, FR_MODULE_SUCCESS_MESSAGE, TAG_ANY)) != NULL){
index e643ac9568d31dc1b760a2d26d2209051403ce53..0db4436f46c1068df4fd644e1e9e2456ccadea95 100644 (file)
@@ -34,6 +34,7 @@ static fr_io_final_t mod_process(REQUEST *request, UNUSED fr_io_action_t action)
        CONF_SECTION *unlang;
        fr_dict_enum_t const *dv;
        fr_dict_attr_t const *da = NULL;
+       VALUE_PAIR *vp;
 
        VERIFY_REQUEST(request);
 
@@ -84,6 +85,12 @@ static fr_io_final_t mod_process(REQUEST *request, UNUSED fr_io_action_t action)
                        break;
                }
 
+               /*
+                *      Allow for over-ride of reply code.
+                */
+               vp = fr_pair_find_by_num(request->reply->vps, 0, FR_PACKET_TYPE, TAG_ANY);
+               if (vp) request->reply->code = vp->vp_uint32;
+
                if (!da) da = fr_dict_attr_by_num(NULL, 0, FR_PACKET_TYPE);
                rad_assert(da != NULL);