JSON API error

Moin,

schicke dieses:


{"jsonrpc":"2.0","method":"WFC_GetSnapshotEx","params":[19085,0],"id":"1476344430281"}

prettyString = 

{
    "method": "WFC_GetSnapshotEx",
    "id": "1476344430281",
    "jsonrpc": "2.0",
    "params": [
        "19085",
        "0"
    ]
}


bekomme aber diesen Fehler zurück

symcon: …/res/rapidjson/include/rapidjson/document.h:1631: int rapidjson::GenericValue<Encoding, Allocator>::GetInt() const [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::CrtAllocator]: Zusicherung »data_.f.flags & kIntFlag« nicht erfüllt.

und IPS4.1 verabschiedet sich

sieht doch eigentlich OK aus - ODER?

Danke

Guido

hier noch der „Start“ welcher OK abgearbeitet wird:


{"method":"WFC_GetConfigurators","id":"1476344967891","jsonrpc":"2.0","params":[]}

{
    "method": "WFC_GetConfigurators",
    "id": "1476344967891",
    "jsonrpc": "2.0",
    "params": []
}

{result=[{editable=true, icon=IPS, mobile=true, retro=false, title=WebFront, autostart=false, retromobilerefresh=30, password=false, retrorefresh=30, retromobile=false, disabled=false, id=19085, position=0}], id=1476344967891, jsonrpc=2.0}


#0  0x766ddf70 in __GI_raise (sig=sig@entry=6)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x766df324 in __GI_abort () at abort.c:89
#2  0x766d6d98 in __assert_fail_base (fmt=0x0, 
    assertion=0xeca848 "data_.f.flags & kIntFlag", assertion@entry=0x0, 
    file=0x1 <error: Cannot access memory at address 0x1>, 
    file@entry=0x682ff430 "\001", line=1631, line@entry=1988026516, 
    function=function@entry=0x1017224 <_ZZNK9rapidjson12GenericValueINS_4UTF8IcEENS_12CrtAllocatorEE6GetIntEvE19__PRETTY_FUNCTION__> "int rapidjson::GenericValue<Encoding, Allocator>::GetInt() const [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::CrtAllocator]") at assert.c:92
#3  0x766d6e74 in __GI___assert_fail (assertion=0x0, file=0x682ff430 "\001", 
    line=1988026516, 
    function=0x1017224 <_ZZNK9rapidjson12GenericValueINS_4UTF8IcEENS_12CrtAllocatorEE6GetIntEvE19__PRETTY_FUNCTION__> "int rapidjson::GenericValue<Encoding, Allocator>::GetInt() const [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::CrtAllocator]") at assert.c:101
#4  0x00036364 in rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::CrtAllocator>::GetInt() const [clone .isra.174] [clone .part.175] ()
#5  0x0090f80c in void IPSDataServer::HandleRPCRequest<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > >(std::ostream&, std::shared_ptr<SimpleWeb::Request<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::as---Type <return> to continue, or q <return> to quit---
io::ip::tcp> > > >) ()
#6  0x0090fe28 in std::_Function_handler<void (std::ostream&, std::shared_ptr<SimpleWeb::Request<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > > >), void IPSDataServer::AssignServerHandler<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > >(std::shared_ptr<SimpleWeb::Server<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > > >)::{lambda(std::ostream&, std::shared_ptr<SimpleWeb::Request<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > > >)#2}>::_M_invoke(std::_Any_data const&, std::ostream&, std::shared_ptr<SimpleWeb::Request<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > > >) ()
#7  0x001d57d0 in SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > >::write_response(std::shared_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > >, std::shared_ptr<SimpleWeb::Request<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > > >, std::function<void (std::ostream&, std::shared_ptr<SimpleWeb::Request<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > > >)>) ()
#8  0x001d5ce0 in SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::---Type <return> to continue, or q <return> to quit---
asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > >::match_resource(std::shared_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > >, std::shared_ptr<SimpleWeb::Request<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > > >) ()
#9  0x001d6414 in boost::asio::detail::read_streambuf_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, std::allocator<char>, boost::asio::detail::transfer_exactly_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > >::read_request_and_content(std::shared_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > >)::{lambda(boost::system::error_code const&, unsigned int)#1}::operator()(boost::system::error_code const&, unsigned int) const::{lambda(boost::system::error_code const&, unsigned int)#3}>::operator()(boost::system::error_code const&, unsigned int, int) ()
#10 0x001d6700 in boost::asio::detail::reactive_socket_recv_op<boost::asio::mutable_buffers_1, boost::asio::detail::read_streambuf_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, std::allocator<char>, boost::asio::detail::transfer_exactly_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > >::read_request_and_content(std::shared_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > >)::{lambda(boost::system::error_c---Type <return> to continue, or q <return> to quit---
ode const&, unsigned int)#1}::operator()(boost::system::error_code const&, unsigned int) const::{lambda(boost::system::error_code const&, unsigned int)#3}> >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned int) ()
#11 0x000da070 in boost::asio::detail::task_io_service::run(boost::system::error_code&) ()
#12 0x008ed598 in std::thread::_Impl<std::_Bind_simple<IPSDataServer::MessageSink(IPSMessage const&)::{lambda()#1} ()> >::_M_run() ()
#13 0x76967348 in ?? () from /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

OK, gefunden:

params wurden als string - und müssen als INT gesendet werden. 4.1 sollte aber nicht abstürzen sondern den Fehler richtig behandeln wie es 3.4 auch macht

Cooler Fund! Das darf natürlich nicht passieren. An der Stelle fehlte aber leider ein Check. Fix zum nächsten Update.

paresy