Fix support for IPv4 addresses in SERVER_HOSTNAME which was broken by new IPv6 support
This commit is contained in:
parent
3c3d2728ad
commit
11b8ab89c9
@ -21,7 +21,7 @@ def main():
|
||||
logger.info('-- Starting Mopidy --')
|
||||
get_or_create_folder('~/.mopidy/')
|
||||
core_queue = multiprocessing.Queue()
|
||||
get_class(settings.SERVER)(core_queue)
|
||||
get_class(settings.SERVER)(core_queue).start()
|
||||
core = CoreProcess(core_queue)
|
||||
core.start()
|
||||
asyncore.loop()
|
||||
|
||||
@ -6,6 +6,7 @@ import asynchat
|
||||
import asyncore
|
||||
import logging
|
||||
import multiprocessing
|
||||
import re
|
||||
import socket
|
||||
import sys
|
||||
|
||||
@ -27,14 +28,18 @@ class MpdServer(asyncore.dispatcher):
|
||||
|
||||
def __init__(self, core_queue):
|
||||
asyncore.dispatcher.__init__(self)
|
||||
self.core_queue = core_queue
|
||||
|
||||
def start(self):
|
||||
try:
|
||||
self.core_queue = core_queue
|
||||
self.create_socket(socket.AF_INET6, socket.SOCK_STREAM)
|
||||
self.set_reuse_addr()
|
||||
self.bind((settings.SERVER_HOSTNAME, settings.SERVER_PORT))
|
||||
self.bind((self._format_hostname(settings.SERVER_HOSTNAME),
|
||||
settings.SERVER_PORT))
|
||||
self.listen(1)
|
||||
logger.info(u'MPD server running at [%s]:%s',
|
||||
settings.SERVER_HOSTNAME, settings.SERVER_PORT)
|
||||
self._format_hostname(settings.SERVER_HOSTNAME),
|
||||
settings.SERVER_PORT)
|
||||
except IOError, e:
|
||||
sys.exit('MPD server startup failed: %s' % e)
|
||||
|
||||
@ -47,6 +52,11 @@ class MpdServer(asyncore.dispatcher):
|
||||
def handle_close(self):
|
||||
self.close()
|
||||
|
||||
def _format_hostname(self, hostname):
|
||||
if re.match('\d+.\d+.\d+.\d+', hostname) is not None:
|
||||
hostname = '::ffff:%s' % hostname
|
||||
return hostname
|
||||
|
||||
|
||||
class MpdSession(asynchat.async_chat):
|
||||
"""
|
||||
|
||||
@ -1,9 +1,16 @@
|
||||
import unittest
|
||||
|
||||
from mopidy.mpd.server import MpdSession
|
||||
from mopidy.mpd.server import MpdServer, MpdSession
|
||||
|
||||
class MpdServerTest(unittest.TestCase):
|
||||
pass # TODO
|
||||
def setUp(self):
|
||||
self.server = MpdServer(None)
|
||||
|
||||
def test_format_hostname_prefixes_ipv4_addresses(self):
|
||||
self.assertEqual(self.server._format_hostname('0.0.0.0'),
|
||||
'::ffff:0.0.0.0')
|
||||
self.assertEqual(self.server._format_hostname('127.0.0.1'),
|
||||
'::ffff:127.0.0.1')
|
||||
|
||||
class MpdSessionTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user