@@ -592,7 +592,7 @@ resume_impl(
592592 route_result ec) const ->
593593 route_result
594594{
595- BOOST_ASSERT (res .resume_ > 0 );
595+ BOOST_ASSERT (req .resume_ > 0 );
596596 if ( ec == route::send ||
597597 ec == route::close ||
598598 ec == route::complete)
@@ -611,9 +611,9 @@ resume_impl(
611611 req.path .remove_suffix (1 );
612612
613613 // resume_ was set in the handler's wrapper
614- BOOST_ASSERT (res .resume_ == res .pos_ );
615- res .pos_ = 0 ;
616- res .ec_ = ec;
614+ BOOST_ASSERT (req .resume_ == req .pos_ );
615+ req .pos_ = 0 ;
616+ req .ec_ = ec;
617617 return do_dispatch (req, res);
618618}
619619
@@ -627,9 +627,17 @@ dispatch_impl(
627627 basic_request& req,
628628 basic_response& res) const
629629{
630- // VFALCO we could reuse the string storage by not clearing them
631- // set req.case_sensitive, req.strict to default of false
632- req = {};
630+ req.verb_str_ .clear ();
631+ req.decoded_path_ .clear ();
632+ req.ec_ .clear ();
633+ req.ep_ = nullptr ;
634+ req.pos_ = 0 ;
635+ req.resume_ = 0 ;
636+ req.verb_ = method::unknown;
637+ req.addedSlash_ = false ;
638+ req.case_sensitive = false ;
639+ req.strict = false ;
640+
633641 if (verb == http_proto::method::unknown)
634642 {
635643 BOOST_ASSERT (! verb_str.empty ());
@@ -664,13 +672,13 @@ dispatch_impl(
664672 auto rv = do_dispatch (req, res);
665673 if (rv == route::detach)
666674 return rv;
667- if (res .ep_ )
675+ if (req .ep_ )
668676 {
669- res .ep_ = nullptr ;
677+ req .ep_ = nullptr ;
670678 return error::unhandled_exception;
671679 }
672- if ( res .ec_ .failed ())
673- res .ec_ = {};
680+ if ( req .ec_ .failed ())
681+ req .ec_ = {};
674682 return rv;
675683}
676684
@@ -728,12 +736,12 @@ dispatch_impl(
728736 match_result mr;
729737 for (auto const & i : impl_->layers )
730738 {
731- if (res .resume_ > 0 )
739+ if (req .resume_ > 0 )
732740 {
733741 auto const n = i.count (); // handlers in layer
734- if (res .pos_ + n < res .resume_ )
742+ if (req .pos_ + n < req .resume_ )
735743 {
736- res .pos_ += n; // skip layer
744+ req .pos_ += n; // skip layer
737745 continue ;
738746 }
739747 // repeat match to recreate the stack
@@ -743,29 +751,29 @@ dispatch_impl(
743751 }
744752 else
745753 {
746- if (i.match .end && res .ec_ .failed ())
754+ if (i.match .end && req .ec_ .failed ())
747755 {
748756 // routes can't have error handlers
749- res .pos_ += i.count (); // skip layer
757+ req .pos_ += i.count (); // skip layer
750758 continue ;
751759 }
752760 if (! i.match (req, mr))
753761 {
754762 // not a match
755- res .pos_ += i.count (); // skip layer
763+ req .pos_ += i.count (); // skip layer
756764 continue ;
757765 }
758766 }
759767 for (auto it = i.entries .begin ();
760768 it != i.entries .end (); ++it)
761769 {
762770 auto const & e (*it);
763- if (res .resume_ )
771+ if (req .resume_ )
764772 {
765773 auto const n = e.handler ->count ();
766- if (res .pos_ + n < res .resume_ )
774+ if (req .pos_ + n < req .resume_ )
767775 {
768- res .pos_ += n; // skip entry
776+ req .pos_ += n; // skip entry
769777 continue ;
770778 }
771779 BOOST_ASSERT (e.match_method (req));
@@ -775,15 +783,15 @@ dispatch_impl(
775783 // check verb for match
776784 if (! e.match_method (req))
777785 {
778- res .pos_ += e.handler ->count (); // skip entry
786+ req .pos_ += e.handler ->count (); // skip entry
779787 continue ;
780788 }
781789 }
782790
783791 route_result rv;
784792 // increment before invoke
785- ++res .pos_ ;
786- if (res .pos_ != res .resume_ )
793+ ++req .pos_ ;
794+ if (req .pos_ != req .resume_ )
787795 {
788796 // call the handler
789797 #ifdef BOOST_NO_EXCEPTIONS
@@ -792,19 +800,19 @@ dispatch_impl(
792800 try
793801 {
794802 rv = e.handler ->invoke (req, res);
795- if (res .ec_ .failed ())
796- res .ep_ = {}; // transition to error mode
803+ if (req .ec_ .failed ())
804+ req .ep_ = {}; // transition to error mode
797805 }
798806 catch (...)
799807 {
800- if (res .ec_ .failed ())
801- res .ec_ = {}; // transition to except mode
802- res .ep_ = std::current_exception ();
808+ if (req .ec_ .failed ())
809+ req .ec_ = {}; // transition to except mode
810+ req .ep_ = std::current_exception ();
803811 rv = route::next;
804812 }
805813 #endif
806814
807- // res .pos_ can be incremented further
815+ // req .pos_ can be incremented further
808816 // inside the above call to invoke.
809817 if (rv == route::detach)
810818 {
@@ -821,21 +829,21 @@ dispatch_impl(
821829 // a subrouter never detaches on its own
822830 BOOST_ASSERT (e.handler ->count () == 1 );
823831 // can't detach on resume
824- if (res .ec_ == route::detach)
832+ if (req .ec_ == route::detach)
825833 detail::throw_invalid_argument ();
826834 // do resume
827- res .resume_ = 0 ;
828- rv = res .ec_ ;
829- res .ec_ = {};
835+ req .resume_ = 0 ;
836+ rv = req .ec_ ;
837+ req .ec_ = {};
830838 }
831839 if ( rv == route::send ||
832840 rv == route::complete ||
833841 rv == route::close)
834842 {
835- if ( res .ec_ .failed ())
836- res .ec_ = {};
837- if ( res .ep_ )
838- res .ep_ = nullptr ;
843+ if ( req .ec_ .failed ())
844+ req .ec_ = {};
845+ if ( req .ep_ )
846+ req .ep_ = nullptr ;
839847 return rv;
840848 }
841849 if (rv == route::next)
@@ -846,7 +854,7 @@ dispatch_impl(
846854 if (! i.match .end )
847855 detail::throw_invalid_argument ();
848856 while (++it != i.entries .end ())
849- res .pos_ += it->handler ->count ();
857+ req .pos_ += it->handler ->count ();
850858 break ; // skip remaining entries
851859 }
852860 // we must handle all route enums
@@ -857,12 +865,12 @@ dispatch_impl(
857865 detail::throw_invalid_argument ();
858866 }
859867 // error handling mode
860- res .ec_ = rv;
868+ req .ec_ = rv;
861869 if (! i.match .end )
862870 continue ; // next entry
863871 // routes don't have error handlers
864872 while (++it != i.entries .end ())
865- res .pos_ += it->handler ->count ();
873+ req .pos_ += it->handler ->count ();
866874 break ; // skip remaining entries
867875 }
868876
@@ -887,13 +895,13 @@ do_dispatch(
887895 // without attempting to perform any additional operations.
888896 return rv;
889897 }
890- if (! res .ec_ .failed ())
898+ if (! req .ec_ .failed ())
891899 {
892900 // unhandled route
893901 return route::next;
894902 }
895903 // error condition
896- return res .ec_ ;
904+ return req .ec_ ;
897905}
898906
899907// } // detail
0 commit comments