fix: resolve empty UUID startup crash loop#19
Merged
Conversation
60f5bc3 to
46dcfde
Compare
46dcfde to
0a6f1cc
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resolves #10 and #17.
On initial boot, Plex Media Server tries to look up its device configuration in the database using an empty string (
"") for theidentifierbind parameter. When the C++ side of PMS handles this empty result (or attempts to parse the returned empty/invalid identifier as a UUID), it throws a Boost/C++std::domain_error: Invalid uuid lengthexception, causing an immediate SIGABRT.How the fix works:
Preferences.xmlforMachineIdentifierand formats it as a standard 36-character hyphenated UUID.bind_text/bind_text64to detect if the query targets thedevicestable and if the parameter index belongs specifically to theidentifiercolumn.identifier, the interposer replaces it on the fly with the parsed formatted UUID from the configuration before forwarding the query to PostgreSQL.nameorplatformupdates ondevices) are safely ignored and remain untouched to avoid DB pollution.Includes Rust unit tests covering the XML parsing and fallback behaviors.