Giter VIP home page Giter VIP logo

Comments (3)

c-lgrant avatar c-lgrant commented on May 18, 2024

I ran a quick test. This also happens with the oatpp websocket example app:

(gdb) where
#0  0x00005555556ceb22 in std::_Hashtable<oatpp::data::share::StringKeyLabelCI_FAST, std::pair<oatpp::data::share::StringKeyLabelCI_FAST const, oatpp::data::share::StringKeyLabel>, std::allocator<std::pair<oatpp::data::share::StringKeyLabelCI_FAST const, oatpp::data::share::StringKeyLabel> >, std::__detail::_Select1st, std::equal_to<oatpp::data::share::StringKeyLabelCI_FAST>, std::hash<oatpp::data::share::StringKeyLabelCI_FAST>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_bucket_index(oatpp::data::share::StringKeyLabelCI_FAST const&, unsigned long) const ()
#1  0x0000555555706803 in std::_Hashtable<oatpp::data::share::StringKeyLabelCI_FAST, std::pair<oatpp::data::share::StringKeyLabelCI_FAST const, oatpp::data::share::StringKeyLabel>, std::allocator<std::pair<oatpp::data::share::StringKeyLabelCI_FAST const, oatpp::data::share::StringKeyLabel> >, std::__detail::_Select1st, std::equal_to<oatpp::data::share::StringKeyLabelCI_FAST>, std::hash<oatpp::data::share::StringKeyLabelCI_FAST>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::find(oatpp::data::share::StringKeyLabelCI_FAST const&) ()
#2  0x000055555570652b in std::unordered_map<oatpp::data::share::StringKeyLabelCI_FAST, oatpp::data::share::StringKeyLabel, std::hash<oatpp::data::share::StringKeyLabelCI_FAST>, std::equal_to<oatpp::data::share::StringKeyLabelCI_FAST>, std::allocator<std::pair<oatpp::data::share::StringKeyLabelCI_FAST const, oatpp::data::share::StringKeyLabel> > >::find(oatpp::data::share::StringKeyLabelCI_FAST const&) ()
#3  0x0000555555704b7b in oatpp::web::protocol::http::outgoing::Response::putHeaderIfNotExists(oatpp::data::share::StringKeyLabelCI_FAST const&, oatpp::data::share::StringKeyLabel const&) ()
#4  0x000055555570f39f in oatpp::web::server::HttpProcessor::processRequest(oatpp::web::server::HttpRouter*, std::shared_ptr<oatpp::data::stream::IOStream> const&, std::shared_ptr<oatpp::web::protocol::http::incoming::BodyDecoder const> const&, std::shared_ptr<oatpp::web::server::handler::ErrorHandler> const&, oatpp::collection::LinkedList<std::shared_ptr<oatpp::web::server::handler::RequestInterceptor> >*, void*, int, std::shared_ptr<oatpp::data::stream::InputStreamBufferedProxy> const&, int&) ()
#5  0x0000555555707e0d in oatpp::web::server::HttpConnectionHandler::Task::run() ()
#6  0x000055555570a41b in void std::__invoke_impl<void, void (oatpp::web::server::HttpConnectionHandler::Task::*)(), oatpp::web::server::HttpConnectionHandler::Task>(std::__invoke_memfun_ref, void (oatpp::web::server::HttpConnectionHandler::Task::*&&)(), oatpp::web::server::HttpConnectionHandler::Task&&) ()
#7  0x00005555557094cd in std::__invoke_result<void (oatpp::web::server::HttpConnectionHandler::Task::*)(), oatpp::web::server::HttpConnectionHandler::Task>::type std::__invoke<void (oatpp::web::server::HttpConnectionHandler::Task::*)(), oatpp::web::server::HttpConnectionHandler::Task>(void (oatpp::web::server::HttpConnectionHandler::Task::*&&)(), oatpp::web::server::HttpConnectionHandler::Task&&) ()
#8  0x000055555570ed53 in decltype (__invoke((_S_declval<0ul>)(), (_S_declval<1ul>)())) std::thread::_Invoker<std::tuple<void (oatpp::web::server::HttpConnectionHandler::Task::*)(), oatpp::web::server::HttpConnectionHandler::Task> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) ()
#9  0x000055555570eb34 in std::thread::_Invoker<std::tuple<void (oatpp::web::server::HttpConnectionHandler::Task::*)(), oatpp::web::server::HttpConnectionHandler::Task> >::operator()() ()
#10 0x000055555570e970 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (oatpp::web::server::HttpConnectionHandler::Task::*)(), oatpp::web::server::HttpConnectionHandler::Task> > >::_M_run() ()
#11 0x00007ffff78ea57f in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#12 0x00007ffff7bbd6db in start_thread (arg=0x7ffff6e85700) at pthread_create.c:463
#13 0x00007ffff734588f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

from oatpp.

lganzzzo avatar lganzzzo commented on May 18, 2024

Hey @c-lgrant

Thanks, for the bug report!
I have it reproduced.
Fixing it...

Regards,
Leonid

from oatpp.

lganzzzo avatar lganzzzo commented on May 18, 2024

Hey @c-lgrant ,

It is fixed now. Please update both oatpp and oatpp-module.

The problem was that Firefox was sending "Connection: keep-alive, Upgrade" header value set.
And oatpp::websocket::Handshaker was expecting just Connection: Upgrade" thus returned nullptr.

I've added support for Handshaker to parse value-sets plus changed return nullptr to throw HttpError

Thanks again for the bug report.

Best Regards,
Leonid

from oatpp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.