Fix crash when the IP is invalid, also supports hostnames
This commit is contained in:
parent
9a5f686dde
commit
7fdf349c28
@ -54,6 +54,8 @@ namespace unison
|
|||||||
bool _isUpdatingStatus = false;
|
bool _isUpdatingStatus = false;
|
||||||
bool _isUpdatingSong = false;
|
bool _isUpdatingSong = false;
|
||||||
|
|
||||||
|
bool _invalidIp = false;
|
||||||
|
|
||||||
private event EventHandler ConnectionChanged;
|
private event EventHandler ConnectionChanged;
|
||||||
private event EventHandler StatusChanged;
|
private event EventHandler StatusChanged;
|
||||||
private event EventHandler SongChanged;
|
private event EventHandler SongChanged;
|
||||||
@ -95,7 +97,7 @@ namespace unison
|
|||||||
|
|
||||||
void OnConnectionChanged(object sender, EventArgs e)
|
void OnConnectionChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (!_connected)
|
if (!_connected && !_invalidIp)
|
||||||
_retryTimer.Start();
|
_retryTimer.Start();
|
||||||
else
|
else
|
||||||
_retryTimer.Stop();
|
_retryTimer.Stop();
|
||||||
@ -189,12 +191,13 @@ namespace unison
|
|||||||
_connection = await ConnectInternal(token);
|
_connection = await ConnectInternal(token);
|
||||||
_commandConnection = await ConnectInternal(token);
|
_commandConnection = await ConnectInternal(token);
|
||||||
}
|
}
|
||||||
catch(MpcNET.Exceptions.MpcConnectException exception)
|
catch(MpcNET.Exceptions.MpcConnectException)
|
||||||
{
|
{
|
||||||
Trace.WriteLine("exception: " + exception);
|
_invalidIp = true;
|
||||||
}
|
}
|
||||||
if (_connection != null && _commandConnection != null)
|
if (_connection != null && _commandConnection != null)
|
||||||
{
|
{
|
||||||
|
_invalidIp = false;
|
||||||
if (_connection.IsConnected && _commandConnection.IsConnected)
|
if (_connection.IsConnected && _commandConnection.IsConnected)
|
||||||
{
|
{
|
||||||
_connected = true;
|
_connected = true;
|
||||||
@ -218,6 +221,21 @@ namespace unison
|
|||||||
{
|
{
|
||||||
IPAddress.TryParse(Properties.Settings.Default.mpd_host, out IPAddress ipAddress);
|
IPAddress.TryParse(Properties.Settings.Default.mpd_host, out IPAddress ipAddress);
|
||||||
|
|
||||||
|
if (ipAddress == null)
|
||||||
|
{
|
||||||
|
IPAddress[] addrList;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
addrList = Dns.GetHostAddresses(Properties.Settings.Default.mpd_host);
|
||||||
|
if (addrList.Length > 0)
|
||||||
|
ipAddress = addrList[0];
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
throw new MpcNET.Exceptions.MpcConnectException("No correct IP provided by user.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_mpdEndpoint = new IPEndPoint(ipAddress, Properties.Settings.Default.mpd_port);
|
_mpdEndpoint = new IPEndPoint(ipAddress, Properties.Settings.Default.mpd_port);
|
||||||
MpcConnection connection = new MpcConnection(_mpdEndpoint);
|
MpcConnection connection = new MpcConnection(_mpdEndpoint);
|
||||||
await connection.ConnectAsync(token);
|
await connection.ConnectAsync(token);
|
||||||
|
Loading…
Reference in New Issue
Block a user