- my $sock = new IO::Socket::INET6(
- PeerAddr => Irssi::settings_get_str("mpd_host"),
- PeerPort => Irssi::settings_get_int("mpd_port"),
- Proto => 'tcp',
- ) or do {
- print CLIENTERROR "failed to open MPD socket: $!.";
- return undef;
- };
+ my $host = Irssi::settings_get_str("mpd_host");
+ my $port = Irssi::settings_get_int("mpd_port");
+ my $sock;
+
+ if ($host =~ /^[@\/]/) {
+ $host =~ s/^@/\0/;
+ $sock = new IO::Socket::UNIX(Type => SOCK_STREAM(),
+ Peer => $host)
+ } else {
+ $sock = new IO::Socket::INET6(PeerAddr => $host,
+ PeerPort => $port,
+ Proto => 'tcp',
+ Timeout => 2)
+ }
+
+ unless ($sock) {
+ print CLIENTERROR "failed to open MPD socket: $!";
+ return;
+ }
+