jamule's AmuleConnection created a new BufferedInputStream on every
request over the same persistent socket. Recreating the wrapper
discards whatever it read ahead into its own buffer past the current
packet boundary -- those bytes are gone from the raw stream, never
reaching the parser, corrupting framing for the next packet on that
connection. This showed up as intermittent
'jamule.exception.ServerException: Invalid opcode (wrong protocol
version?)' failures, unpredictably dropping some Torznab searches.
Patched jamule keeps one BufferedInputStream per connection (recreated
only alongside the socket on reconnect), published locally as
com.vexdev:jamule:1.0.3-thax1.
- save_path in torrent info now includes the query category, matching
what Radarr/Sonarr each request for their own category, so imports
resolve to per-app subfolders via Remote Path Mapping.
- New /internal/completed-by-category plain-text endpoint exposing the
real stored hash->category mapping (not the request filter echo),
for the amule incoming-folder mover to sort completed downloads by
category without needing a JSON parser.
Patched TorznabApi.kt to accept the hyphenated action names
(movie-search, tv-search) that Caps.kt already advertises and that
Radarr/Sonarr actually send, alongside the original non-hyphenated
variants (movie, tvsearch).
Upstream: https://github.com/danielchc/amarr