I have a use-case whereby I'm loading ogg-compressed data from an InputStream which is some realtime incoming data-stream (i.e. no ability to know the size of the stream or jump around in it). I implemented setPosition in my inputstream to always return false, however internally in the juce ogg wrapping code, when ogg does the test to check whether the stream is seekable, it nevertheless determines that it is seekable (because the oggSeekCallback function doesn't test the return value of setPosition).
The problem being that if ogg determines the stream is seekable (which it tests in the first line of _ov_open1()), then it will try to read the end of the stream / etc, which this stream doesn't support, and basically gets stuck in an infinite loop of trying to read more data which the stream can't provide yet.
A solution I initially used was to comment-out the line in the OggReader constructor where it sets callbacks.seek_func. This caused everything to work as desired, proving that it can work. But since I don't want to depend on hacks to the juce code, it would be good if juce would support this scenario (for the case of ogg, and this may well apply to other file-formats as well).
Note - the cleaner solution that as I understand things seems a good general fix for the issue (and may be just fixing what may well just be a simple bug), which I am now using and also works for me, is fixing the oggSeekCallback() function in juce_OggVorbisAudioFormat.cpp such that if setPosition() returns false when it calls it, then it correspondingly returns the -1 error code that ogg is expecting if seeking is not supported, i.e.:
return in->setPosition(offset) ? 0 : -1;