From 3eb54e60d677c52df09c38c9c59354006a4bb81c Mon Sep 17 00:00:00 2001 From: Jerome Quelin Date: Fri, 20 May 2016 14:05:02 +0200 Subject: [PATCH] fix rt#99762 - support for mpd on a Unix socket (smcv) --- Changes | 1 + lib/Audio/MPD.pm | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Changes b/Changes index 5d71736..70486ff 100644 --- a/Changes +++ b/Changes @@ -1,6 +1,7 @@ Changelog for Audio-MPD {{$NEXT}} + - fix rt#99762 - support for mpd on a Unix socket (smcv) 2.003 2016-05-20 14:01:00+02:00 Europe/Paris - fix rt#114136 - allow mpd-dynamic to run without a ratings.db diff --git a/lib/Audio/MPD.pm b/lib/Audio/MPD.pm index cfd652f..a7cf425 100644 --- a/lib/Audio/MPD.pm +++ b/lib/Audio/MPD.pm @@ -56,7 +56,7 @@ has collection => ( ro, lazy_build, isa=>'Audio::MPD::Collection' ); has playlist => ( ro, lazy_build, isa=>'Audio::MPD::Playlist' ); has version => ( rw ); -has _socket => ( rw, isa=>'IO::Socket::IP' ); +has _socket => ( rw, isa=>'IO::Socket' ); #-- @@ -119,11 +119,21 @@ sub _connect_to_mpd_server { my ($self) = @_; # try to connect to mpd. - my $socket = IO::Socket::IP->new( - PeerAddr => $self->host, - PeerPort => $self->port, - ) - or die "Could not create socket: $!\n"; + my $socket; + + if ($self->host =~ m{^/}) { + eval q{use IO::Socket::UNIX qw(); 1} + or die "Could not load IO::Socket::UNIX: $@\n"; + $socket = IO::Socket::UNIX->new($self->host) + or die "Could not create socket: $!\n"; + } + else { + $socket = IO::Socket::IP->new( + PeerAddr => $self->host, + PeerPort => $self->port, + ) + or die "Could not create socket: $!\n"; + } # parse version information. my $line = $socket->getline;