mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-03-21 03:28:59 -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_->CAT_poll_interval_spin_box->setValue (rig_params_.poll_interval);
|
||||
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->setEnabled(true);
|
||||
on_udp_server_line_edit_editingFinished ();
|
||||
ui_->udp_server_port_spin_box->setValue (udp_server_port_);
|
||||
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 ()
|
||||
{
|
||||
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_)
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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 ())
|
||||
{
|
||||
Q_EMIT self_->error ("UDP server DNS lookup failed: " + host_info.errorString ());
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user