JSON API debug lambda returned a dangling reference on Android, fix by
moving the scope of the returned object
What made this a bit tricky to understand was the fact that it happened
only on Android, while the code was formally incorrect for all
platforms, and strangely caused a stack overflow due to two std lib
functions (sentry and flush) calling each other ad infinitum
+#23379 0x603cb2a8 in std::__ndk1::basic_ostream<char, std::__ndk1::char_traits<char> >::flush (this=0x618e92bc) at /opt/android-ndk/sources/cxx-stl/llvm-libc++/include/ostream:949
+#23380 0x603cad08 in std::__ndk1::basic_ostream<char, std::__ndk1::char_traits<char> >::sentry::sentry (this=0x618e9284, __os=...) at /opt/android-ndk/sources/cxx-stl/llvm-libc++/include/ostream:270
+#23381 0x603cb2a8 in std::__ndk1::basic_ostream<char, std::__ndk1::char_traits<char> >::flush (this=0x618e92bc) at /opt/android-ndk/sources/cxx-stl/llvm-libc++/include/ostream:949
+#23382 0x603cad08 in std::__ndk1::basic_ostream<char, std::__ndk1::char_traits<char> >::sentry::sentry (this=0x618e9304, __os=...) at /opt/android-ndk/sources/cxx-stl/llvm-libc++/include/ostream:270
+#23383 0x603caa6c in std::__ndk1::__put_character_sequence<char, std::__ndk1::char_traits<char> > (__os=..., __str=0x61379a60 " user: ", __len=7) at /opt/android-ndk/sources/cxx-stl/llvm-libc++/include/ostream:726
+#23384 0x603caa30 in std::__ndk1::operator<< <std::__ndk1::char_traits<char> > (__os=..., __str=0x61379a60 " user: ") at /opt/android-ndk/sources/cxx-stl/llvm-libc++/include/ostream:869
+#23385 0x60522184 in t_RsLogger<(RsLoggerCategories)5>::operator<< <char [8]> (this=0x618e92bc, val=...) at ../../../../Development/rs-develop/libretroshare/src/util/rsdebug.h:53
+#23386 0x60bbe5ec in JsonApiServer::registerHandler(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::function<void (std::__ndk1::shared_ptr<restbed::Session>)> const&, bool)::$_259::operator()(std::__ndk1::shared_ptr<restbed::Session>, std::__ndk1::function<void (std::__ndk1::shared_ptr<restbed::Session>)> const&) const (this=0x617d8364, session=..., callback=...) at ../../../../Development/rs-develop/libretroshare/src/jsonapi/jsonapi.cpp:517
Update PhotoItem members
- remove excessive fields in Photo
- add RsGxsFile to Photo
- update ShareMode for Album
- renamed photo.mThumbnail to mLowResImage
Update Photo GUI
- enable setting of AlbumExtra parameters.
- added data for Ordering of photos
- stop showing duplicates in PhotoSlideShow
Added REF fields to Wire Msgs to allow replys to work well.
Added description of how the Message fields should be used.
Added WireGroupDialog for creation of WireGroups.
Updated PulseAddDialog to support publishing Pulses and Replies.
Added classes to display Pulses / Groups.
Added single selection point of WireGroup for publishing.
Added basic "refresh" to reload new GXS data.
Significant improvements to AlbumDialog
- load Existing Photos to the Album
- drag and drop add new Photos
- mark photos for deletion
- publish these changes
- color photoitems depending on state
Fixed up Top-Level Photo display.
- only show latest version of photo (hide deleted)
- fixup grouping by "Own / Subscribed / Other" Albums
- added Album detail editing using GxsGroupDialog
WIP improvements to PhotoService:
- switch p3photoservice to use gxcommentservice
- clean out old RsPhotoComment classes
- redesign PhotoDialog to use standard GxsCommentService classes
- remove unneeded old Comment classes from GUI
- fix indenting for PhotoDialog and p3photoservice.h
- fix layout issue in Extra Widgets for GxsGroupDialog
WIP improvements to PhotoService:
- Switch from custom image to use RsGxsImage
- Update classes for new Image class
- fix serialiser for photos
- switch group creation to use GxGroupDialog
- tweak GxsGroupDialog to display extra Widgets
- add AlbumExtra widget
Improve atomic access to restbed service
Protect JSON API restart against bursts
Fix JSON API error condition enum registration
Provide ostream helper for error_condition
Provide optional forced thread cancel for debugging purpose, disabled by
default at compile time define RS_THREAD_FORCE_STOP to enable it
Avoid double fullstop in retroshare-gui json api apply button
JSON API server uses standardized error handling based on
std::error_condition for a few method, this improve debugabbility both
from library size and from API client side
JSON API auth token are now more flexible, now the only proibition is using
colon character ':' in user name
Implemented TO_JSON operation for std::error_condition
Avoid unkown serial job handling code duplication via fatalUnknownSerialJob
Usability improvement in t_RsLogger
Disable compilation of now unused is_alphanumeric
Browsers won't let JavaScript properly handle the error if the corsa
headers are missing thanks Saud for report see:
retroshare://forum?name=Shouldn%27t%20CORS%20headers%20be%20present%20for%20all%20API%20responses%3F&id=8fd22bd8f99754461e7ba1ca8a727995&msgid=e3232ae3a1b76698576a9159ba962fa5091e710c