mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-05-23 18:02:29 -04:00
Check the network address of the UDP server for errors before accepting it. Thanks to Mike W9MDB.
This commit is contained in:
parent
2e59bd79d3
commit
35d758647d
@ -1388,7 +1388,9 @@ void Configuration::impl::initialize_models ()
|
|||||||
ui_->TX_audio_source_button_group->button (rig_params_.audio_source)->setChecked (true);
|
ui_->TX_audio_source_button_group->button (rig_params_.audio_source)->setChecked (true);
|
||||||
ui_->CAT_poll_interval_spin_box->setValue (rig_params_.poll_interval);
|
ui_->CAT_poll_interval_spin_box->setValue (rig_params_.poll_interval);
|
||||||
ui_->opCallEntry->setText (opCall_);
|
ui_->opCallEntry->setText (opCall_);
|
||||||
|
ui_->udp_server_line_edit->setEnabled(false);
|
||||||
ui_->udp_server_line_edit->setText (udp_server_name_);
|
ui_->udp_server_line_edit->setText (udp_server_name_);
|
||||||
|
ui_->udp_server_line_edit->setEnabled(true);
|
||||||
on_udp_server_line_edit_editingFinished ();
|
on_udp_server_line_edit_editingFinished ();
|
||||||
ui_->udp_server_port_spin_box->setValue (udp_server_port_);
|
ui_->udp_server_port_spin_box->setValue (udp_server_port_);
|
||||||
load_network_interfaces (ui_->udp_interfaces_combo_box, udp_interface_names_);
|
load_network_interfaces (ui_->udp_interfaces_combo_box, udp_interface_names_);
|
||||||
@ -2449,6 +2451,27 @@ void Configuration::impl::on_udp_server_line_edit_textChanged (QString const&)
|
|||||||
|
|
||||||
void Configuration::impl::on_udp_server_line_edit_editingFinished ()
|
void Configuration::impl::on_udp_server_line_edit_editingFinished ()
|
||||||
{
|
{
|
||||||
|
if (this->isVisible())
|
||||||
|
{
|
||||||
|
int q1,q2,q3,q4;
|
||||||
|
char tmpbuf[2];
|
||||||
|
int n = sscanf(ui_->udp_server_line_edit->text ().trimmed ().toLatin1(), "%d.%d.%d.%d.%1s", &q1, &q2, &q3, &q4, tmpbuf);
|
||||||
|
const char *iperr;
|
||||||
|
switch(n)
|
||||||
|
{
|
||||||
|
case 0: iperr = "Error before first number";break;
|
||||||
|
case 1: iperr = "Error between first and second number";break;
|
||||||
|
case 2: iperr = "Error between second and third number";break;
|
||||||
|
case 3: iperr = "Error between third and fourth number";break;
|
||||||
|
case 4: iperr = ""; break;
|
||||||
|
default: iperr = "Unknown error n=" + n;
|
||||||
|
}
|
||||||
|
if (n != 4)
|
||||||
|
{
|
||||||
|
MessageBox::warning_message (this, tr ("Error in network address"), tr (iperr));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (udp_server_name_edited_)
|
if (udp_server_name_edited_)
|
||||||
{
|
{
|
||||||
auto const& server = ui_->udp_server_line_edit->text ().trimmed ();
|
auto const& server = ui_->udp_server_line_edit->text ().trimmed ();
|
||||||
@ -2468,6 +2491,7 @@ void Configuration::impl::on_udp_server_line_edit_editingFinished ()
|
|||||||
check_multicast (ha);
|
check_multicast (ha);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Configuration::impl::host_info_results (QHostInfo host_info)
|
void Configuration::impl::host_info_results (QHostInfo host_info)
|
||||||
|
@ -137,6 +137,7 @@ void MessageClient::impl::host_info_results (QHostInfo host_info)
|
|||||||
if (QHostInfo::NoError != host_info.error ())
|
if (QHostInfo::NoError != host_info.error ())
|
||||||
{
|
{
|
||||||
Q_EMIT self_->error ("UDP server DNS lookup failed: " + host_info.errorString ());
|
Q_EMIT self_->error ("UDP server DNS lookup failed: " + host_info.errorString ());
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user