Bug 134614

Summary: The daap media device can autodetect, but not load iTunes 6 shares when using mDNSResponder 107.5
Product: [Applications] amarok Reporter: Elliot Pahl <elliot.pahl>
Component: Collections/DAAPAssignee: Amarok Developers <amarok-bugs-dist>
Status: RESOLVED UNMAINTAINED    
Severity: normal CC: myriam
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Gentoo Packages   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Elliot Pahl 2006-09-25 04:55:41 UTC
Version:           1.4-svn (using KDE KDE 3.5.2)
Installed from:    Gentoo Packages
Compiler:          gcc-4.1.1 
OS:                Linux

Using mDNSResponder-98, iTunes 7 shares are auto-detected, and can be loaded.

However, using mDNSResponder-107.5, shares are auto-detected, but will not load.
Comment 1 Elliot Pahl 2006-09-26 04:46:13 UTC
As the summary says, iTunes 6 has the issue with the later version of mDNSResponder.

iTunes 7 doesn't is detected, but cannot be loaded by either version of mDNSResponder.

I am running mt-daapd, and my computer is liv013.local. the iTunes 7 mac is stephen-nelsons-computer.local. Here is some console output:

amarok:   stephen-nelsons-computer.local.:3689
amarok:   stephen-nelsons-computer.local.:3689
amarok: END__: virtual void DaapClient::rmbPressed(QListViewItem*, const QPoint&, int) - Took 0.97s
amarok: BEGIN: void DaapClient::serverOffline(KSharedPtr<DNSSD::RemoteService>)
amarok: END__: void DaapClient::serverOffline(KSharedPtr<DNSSD::RemoteService>) - Took 0.015s
amarok: BEGIN: void DaapClient::serverOffline(KSharedPtr<DNSSD::RemoteService>)
amarok: END__: void DaapClient::serverOffline(KSharedPtr<DNSSD::RemoteService>) - Took 0.00015s
amarok: BEGIN: void DaapClient::foundDaap(KSharedPtr<DNSSD::RemoteService>)
amarok: END__: void DaapClient::foundDaap(KSharedPtr<DNSSD::RemoteService>) - Took 0.00036s
amarok: BEGIN: void DaapClient::resolvedDaap(bool)
amarok:   Stephen Nelson?s Music stephen-nelsons-computer.local. local. _daap._tcp
amarok:   Resolver error code (0 is no error): no error stephen-nelsons-computer.local.
amarok:   ip found is 192.168.1.127
amarok: END__: void DaapClient::resolvedDaap(bool) - Took 0.0015s
amarok: BEGIN: bool MediaDevice::disconnectDevice(bool)
amarok:   [MediaBrowser] disconnecting: hook=true
amarok:   [MediaBrowser] disconnecting: ok
amarok: END__: bool MediaDevice::disconnectDevice(bool) - Took 0.0019s
amarok: BEGIN: virtual bool DaapClient::openDevice(bool)
amarok: END__: virtual bool DaapClient::openDevice(bool) - Took 0.00073s
amarok: BEGIN: void DaapClient::foundDaap(KSharedPtr<DNSSD::RemoteService>)
amarok: END__: void DaapClient::foundDaap(KSharedPtr<DNSSD::RemoteService>) - Took 0.00081s
amarok: BEGIN: void DaapClient::resolvedDaap(bool)
amarok:   potassium live013.local. local. _daap._tcp
amarok:   Resolver error code (0 is no error): no error live013.local.
amarok:   ip found is 192.168.1.205
amarok: END__: void DaapClient::resolvedDaap(bool) - Took 0.0037s
amarok: BEGIN: void DaapClient::foundDaap(KSharedPtr<DNSSD::RemoteService>)
amarok: END__: void DaapClient::foundDaap(KSharedPtr<DNSSD::RemoteService>) - Took 0.00032s
amarok: BEGIN: void DaapClient::resolvedDaap(bool)
amarok:   Stephen Nelson?s Music stephen-nelsons-computer.local. local. _daap._tcp
amarok:   Resolver error code (0 is no error): no error stephen-nelsons-computer.local.
amarok:   ip found is 192.168.1.127
amarok: END__: void DaapClient::resolvedDaap(bool) - Took 0.0034s
amarok: BEGIN: virtual void DaapClient::rmbPressed(QListViewItem*, const QPoint&, int)
amarok:   live013.local.:3689
amarok:   stephen-nelsons-computer.local.:3689
amarok:   stephen-nelsons-computer.local.:3689
amarok: BEGIN: void Daap::Reader::loginRequest()
amarok: END__: void Daap::Reader::loginRequest() - Took 0.0004s
amarok: END__: virtual void DaapClient::rmbPressed(QListViewItem*, const QPoint&, int) - Took 0.84s
amarok: BEGIN: void Daap::Reader::loginHeaderReceived(const QHttpResponseHeader&)
amarok: END__: void Daap::Reader::loginHeaderReceived(const QHttpResponseHeader&) - Took 9.8e-05s
amarok: BEGIN: void Daap::Reader::loginFinished(int, bool)
amarok:   mlog has value 11
amarok:   mstt has value 200
amarok:   mlid has value 605077223
amarok: END__: void Daap::Reader::loginFinished(int, bool) - Took 0.00071s
amarok: BEGIN: void Daap::Reader::updateFinished(int, bool)
amarok:   [WARNING!] ??▒ doesn't work
amarok: END__: void Daap::Reader::updateFinished(int, bool) - Took 0.00061s
amarok: [WARNING!] ??▒ doesn't work
amarok: [WARNING!] ??▒ doesn't work
amarok: songList.count() = 0
amarok: BEGIN: void DaapClient::createTree(const QString&, Daap::SongList)
amarok: END__: void DaapClient::createTree(const QString&, Daap::SongList) - Took 7.8e-05s
amarok: BEGIN: virtual void DaapClient::rmbPressed(QListViewItem*, const QPoint&, int)
amarok:   live013.local.:3689
amarok:   stephen-nelsons-computer.local.:3689
amarok:   stephen-nelsons-computer.local.:3689
amarok: END__: virtual void DaapClient::rmbPressed(QListViewItem*, const QPoint&, int) - Took 0.86s
amarok: [xine-engine] XINE_EVENT_UI_PLAYBACK_FINISHED
amarok: BEGIN: void EngineController::play(const MetaBundle&, uint)
amarok:   [controller] Loading URL: file:///mnt/tmp/music/Jane%27s%20Addiction%20-%20Ritual%20De%20Lo%20Habitual/Jane%27s%20Addiction%20-%20Ritual%20De%20Lo%20Habitual%20-%2009%20-%20Classic%20Girl.mp3
amarok:   [CollectionDB] track ended: file:///mnt/tmp/music/INXS/INXS-%20The%20Greatest%20Hits/(17)%20Bitter%20Tears.mp3
amarok: BEGIN: virtual bool XineEngine::load(const KURL&, bool)
amarok:     [xine-engine] Before xine_open() *****
amarok:     [xine-engine] After xine_open() *****
amarok: END__: virtual bool XineEngine::load(const KURL&, bool) - Took 0.26s
amarok:   [Moodbar] Resetting moodbar: /mnt/tmp/music/Jane's Addiction - Ritual De Lo Habitual/Jane's Addiction - Ritual De Lo Habitual - 09 - Classic Girl.mp3
amarok: BEGIN: virtual bool XineEngine::play(uint)
amarok: BEGIN: void EngineSubject::stateChangedNotify(Engine::State)
amarok:       [virtual void Amarok::StatusBar::engineStateChanged(Engine::State, Engine::State)] Line: 137
amarok: BEGIN: virtual void ContextBrowser::engineStateChanged(Engine::State, Engine::State)
amarok: END__: virtual void ContextBrowser::engineStateChanged(Engine::State, Engine::State) - Took 5.6e-05s
amarok: END__: void EngineSubject::stateChangedNotify(Engine::State) - Took 0.0042s
amarok: END__: virtual bool XineEngine::play(uint) - Took 0.0044s
amarok: BEGIN: void EngineSubject::newMetaDataNotify(const MetaBundle&, bool)
amarok: BEGIN: virtual void ThreadWeaver::Thread::run()
amarok: END__: void EngineSubject::newMetaDataNotify(const MetaBundle&, bool) - Took 0.43s
amarok: END__: void EngineController::play(const MetaBundle&, uint) - Took 0.79s
amarok:   [xine-engine] Metadata received.
amarok: BEGIN: void CurrentTrackJob::showArtistsAlbums(const QString&, uint, uint)
amarok: END__: void CurrentTrackJob::showArtistsAlbums(const QString&, uint, uint) - Took 1.1s
amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 1.5s
amarok:   [ThreadWeaver] Job completed: CurrentTrackJob. Jobs pending: 0
amarok: Resolver error code (0 is no error): no error 192.168.1.127
amarok: ip found is 192.168.1.127
amarok: BEGIN: void Daap::Reader::loginRequest()
amarok: END__: void Daap::Reader::loginRequest() - Took 0.002s
amarok: BEGIN: void Daap::Reader::loginHeaderReceived(const QHttpResponseHeader&)
amarok: END__: void Daap::Reader::loginHeaderReceived(const QHttpResponseHeader&) - Took 0.00015s
amarok: BEGIN: void Daap::Reader::loginFinished(int, bool)
amarok:   mlog has value 11
amarok:   mstt has value 200
amarok:   mlid has value 559063377
amarok: END__: void Daap::Reader::loginFinished(int, bool) - Took 0.00078s
amarok: BEGIN: void Daap::Reader::updateFinished(int, bool)
amarok:   [WARNING!] ??▒ doesn't work
amarok: END__: void Daap::Reader::updateFinished(int, bool) - Took 0.00057s
amarok: [WARNING!] ??▒ doesn't work
amarok: [WARNING!] ??▒ doesn't work
amarok: songList.count() = 0
amarok: BEGIN: void DaapClient::createTree(const QString&, Daap::SongList)
amarok: END__: void DaapClient::createTree(const QString&, Daap::SongList) - Took 7.6e-05s
amarok: BEGIN: virtual void DaapClient::rmbPressed(QListViewItem*, const QPoint&, int)
amarok:   live013.local.:3689
amarok:   stephen-nelsons-computer.local.:3689
amarok:   192.168.1.127:3689
Comment 2 Elliot Pahl 2006-09-26 04:52:44 UTC
The console output is from amarok compiled with --enable-debug=full, and amarok/src/mediadevice/daap/daapreader/reader.cpp, lines 339 and 340 changed to:
#define DEBUGTAG( VAR ) debug() << tag << " has value " << VAR << endl;
//#define DEBUGTAG( VAR )
Comment 3 Tom G. 2006-09-26 09:42:18 UTC
here is a pcap dump of itunes 6 and itunes 7 for comparison 

http://forums.fireflymediaserver.org/viewtopic.php?p=6637&sid=bfb17d3a5897dc1aa1d178193564e089

Tunes 6.0.22 (Win) accessing iTunes 7 (Mac) (Recieved packets only)
iTunes 7 (Win) accessing iTunes 7 (Mac) 
Comment 4 Ian Monroe 2006-10-06 03:39:09 UTC
So yea, bad news. Was talking to the daap-sharp guy, iTunes 7 is using an entirely new DRM-like authentication method. So someone is going to have to reverse engineer it like they did with the iTunes 4 method.
Comment 5 Myriam Schweingruber 2009-03-19 20:49:30 UTC
Sorry, Amarok 1.x is not maintained anymore.