Some more information after having extended logging:
Problem seems to appear on iOS 6 clients only. iOS7 and even iOS5 clients always have sessionID in init() method of RandomAccesReader.
2014-02-03 11:08:22 MEZ comment server ERROR 500 - ----------------- Session ID is null ----------------------------- - - - 7.266 - - - - - - - - - - - - - - - - - - - - - - - - -
2014-02-03 11:08:22 MEZ comment server ERROR 500 - Query String: userId=27312&contentId=211254&endtime=1392591600&hash=50ba172c7ce7bc4893cb46c856582eb5 - - - 7.267 - - - - - - - - - - - - - - - - - - - - - - - - -
2014-02-03 11:08:22 MEZ comment server ERROR 500 - User Agent: AppleCoreMedia/1.0.0.10B329 (iPhone; U; CPU OS 6_1_3 like Mac OS X; de_de) - - - 7.267 - - - - - - - - - - - - - - - - - - - - - - - - -
2014-02-03 11:08:22 MEZ comment server ERROR 500 - HTTP HEADERS: {protocol=HTTP/1.1, connection=keep-alive, host=85.25.98.25:1935, accept-language=de-de, range=bytes=0-1, accept=*/*, context=onleihe/mp3:001.mp3c/playlist.m3u8?userId=27312&contentId=211254&endtime=1392591600&hash=50ba172c7ce7bc4893cb46c856582eb5, method=GET, user-agent=AppleCoreMedia/1.0.0.10B329 (iPhone; U; CPU OS 6_1_3 like Mac OS X; de_de), accept-encoding=identity, x-playback-session-id=1127969C-00F4-4827-9925-F4CB67372266, uri=GET /onleihe/mp3:001.mp3c/playlist.m3u8?userId=27312&contentId=211254&endtime=1392591600&hash=50ba172c7ce7bc4893cb46c856582eb5 HTTP/1.1} - - - 7.268 - - - - - - - - - - - - - - - - - - - - - - - - -
2014-02-03 11:08:22 MEZ comment server ERROR 500 - isAcceptSession() : true - - - 7.268 - - - - - - - - - - - - - - - - - - - - - - - - -
2014-02-03 11:08:22 MEZ comment server ERROR 500 - isHTTPOrigin() : false - - - 7.268 - - - - - - - - - - - - - - - - - - - - - - - - -
2014-02-03 11:08:22 MEZ comment server ERROR 500 - isValidated() : false - - - 7.269 - - - - - - - - - - - - - - - - - - - - - - - - -
2014-02-03 11:08:22 MEZ comment server ERROR 500 - ------------------------------------------------------------------ - - - 7.269 - - - - - - - - - - - - - - - - - - - - - - - - -
java.lang.NullPointerException
at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:917)
at com.etecture.divibib.onleihe.ShufflerPool.getShuffler(ShufflerPool.java:40)
at com.etecture.divibib.onleihe.ExperimentalWatermarkFileShufflingReader.init(ExperimentalWatermarkFileShufflingReader.java:81)
at com.wowza.io.RandomAccessReaderFactory.createInstance(RandomAccessReaderFactory.java:20)
at com.wowza.wms.mediareader.mp3.MediaReaderMP3.init(MediaReaderMP3.java:135)
at com.wowza.wms.httpstreamer.model.HTTPStreamerAdapterBase.doesFileExist(HTTPStreamerAdapterBase.java:1418)
at com.wowza.wms.httpstreamer.cupertinostreaming.httpstreamer.HTTPStreamerAdapterCupertinoStreamer.onCheckAvailability(HTTPStreamerAdapterCupertinoStreamer.java:545)
at com.wowza.wms.httpstreamer.cupertinostreaming.httpstreamer.HTTPStreamerAdapterCupertinoStreamer.serviceMsg(HTTPStreamerAdapterCupertinoStreamer.java:432)
at com.wowza.wms.httpstreamer.cupertinostreaming.httpstreamer.HTTPStreamerAdapterCupertinoStreamer.service(HTTPStreamerAdapterCupertinoStreamer.java:393)
As you can see on stacktrace, init() is called from:
com.wowza.wms.httpstreamer.model.HTTPStreamerAdapterBase.doesFileExist(HTTPStreamerAdapterBase.java:1418)
To eventually implement a workaround for iOS 6 clients I need to know: Is the Reader which is initialized inside com.wowza.wms.httpstreamer.model.HTTPStreamerAdapterBase.doesFileExist reused for Reading or is another reader object initialized for streaming afterwards (which maybe has valid sessionID) ?
Best regards,
Sascha