Make WordPress Core

Changeset 62769


Ignore:
Timestamp:
07/17/2026 04:17:35 PM (3 weeks ago)
Author:
desrosj
Message:

REST API: sub-requests must always use dispatch.

Props xknown, johnbillion, joehoyle, jorbin, sergeybiryukov, ehtis, desrosj.

Location:
trunk/src/wp-includes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/rest-api.php

    r62748 r62769  
    451451        }
    452452
     453        // Short-circuit before define()/die() if a REST dispatch is already in flight.
     454        // serve_request() enforces this too; guarding here avoids the trailing die().
     455        if ( isset( $GLOBALS['wp_rest_server'] )
     456                && $GLOBALS['wp_rest_server'] instanceof WP_REST_Server
     457                && $GLOBALS['wp_rest_server']->is_dispatching()
     458        ) {
     459                return;
     460        }
     461
    453462        // Return an error message if query_var is not a string.
    454463        if ( ! is_string( $GLOBALS['wp']->query_vars['rest_route'] ) ) {
  • trunk/src/wp-includes/rest-api/class-wp-rest-server.php

    r62617 r62769  
    284284         */
    285285        public function serve_request( $path = null ) {
     286                // Refuse to start a fresh top-level REST cycle while another dispatch
     287                // is already in flight. Internal sub-requests must use dispatch().
     288                if ( $this->is_dispatching() ) {
     289                        return false;
     290                }
     291
    286292                /* @var WP_User|null $current_user */
    287293                global $current_user;
Note: See TracChangeset for help on using the changeset viewer.