# HG changeset patch # User unc0rr # Date 1197761083 0 # Node ID 08ed55ea1e2af12a4a18b9ed3c789c932beb3e19 # Parent a8970859f50e2df40aa25dd294d7fee5dfdc4b06 - Fix a bug when server fails to start, and then connecting to another server on the same host (strange, the fix won't work on my machine) - Fix port in previous commit diff -r a8970859f50e -r 08ed55ea1e2a QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Sat Dec 15 22:57:22 2007 +0000 +++ b/QTfrontend/hwform.cpp Sat Dec 15 23:24:43 2007 +0000 @@ -416,15 +416,24 @@ void HWForm::NetStartServer() { - config->SaveOptions(); - pnetserver = new HWNetServer; - pnetserver->StartServer(ui.pageNetServer->sbPort->value()); - _NetConnect("localhost", pnetserver->getRunningPort(), ui.pageOptions->editNetNick->text()); + config->SaveOptions(); - if (ui.pageNet->rbLocalGame->isChecked()) - pRegisterServer = new HWNetUdpServer(0, ui.pageNetServer->leServerDescr->text(), ui.pageNetServer->sbPort->value()); - else - pRegisterServer = new HWNetWwwServer(0, ui.pageNetServer->leServerDescr->text(), ui.pageNetServer->sbPort->value()); + pnetserver = new HWNetServer; + if(!pnetserver->StartServer(ui.pageNetServer->sbPort->value())) + { + QMessageBox::critical(0, tr("Error"), + tr("Unable to start the server")); + delete pnetserver; + pnetserver = 0; + return; + } + + _NetConnect("localhost", pnetserver->getRunningPort(), ui.pageOptions->editNetNick->text()); + + if (ui.pageNet->rbLocalGame->isChecked()) + pRegisterServer = new HWNetUdpServer(0, ui.pageNetServer->leServerDescr->text(), ui.pageNetServer->sbPort->value()); + else + pRegisterServer = new HWNetWwwServer(0, ui.pageNetServer->leServerDescr->text(), ui.pageNetServer->sbPort->value()); } void HWForm::NetDisconnect() diff -r a8970859f50e -r 08ed55ea1e2a QTfrontend/netserver.cpp --- a/QTfrontend/netserver.cpp Sat Dec 15 22:57:22 2007 +0000 +++ b/QTfrontend/netserver.cpp Sat Dec 15 23:24:43 2007 +0000 @@ -25,18 +25,15 @@ extern char delimeter; -void HWNetServer::StartServer(quint16 port) +bool HWNetServer::StartServer(quint16 port) { ds_port = port; hhnum=0; IPCServer = new QTcpServer(this); - if (!IPCServer->listen(QHostAddress::Any, ds_port)) { - QMessageBox::critical(0, tr("Error"), - tr("Unable to start the server: %1.") - .arg(IPCServer->errorString())); - } connect(IPCServer, SIGNAL(newConnection()), this, SLOT(NewConnection())); + + return IPCServer->listen(QHostAddress::Any, ds_port); } void HWNetServer::StopServer() diff -r a8970859f50e -r 08ed55ea1e2a QTfrontend/netserver.h --- a/QTfrontend/netserver.h Sat Dec 15 22:57:22 2007 +0000 +++ b/QTfrontend/netserver.h Sat Dec 15 23:24:43 2007 +0000 @@ -35,7 +35,7 @@ Q_OBJECT public: - void StartServer(quint16 port); + bool StartServer(quint16 port); void StopServer(); bool isChiefClient(HWConnectedClient* cl) const; QMap getGameCfg() const; diff -r a8970859f50e -r 08ed55ea1e2a QTfrontend/pages.cpp --- a/QTfrontend/pages.cpp Sat Dec 15 22:57:22 2007 +0000 +++ b/QTfrontend/pages.cpp Sat Dec 15 23:24:43 2007 +0000 @@ -510,7 +510,8 @@ } QString host = model->index(mi.row(), 1).data().toString(); quint16 port = model->index(mi.row(), 2).data().toUInt(); - emit connectClicked(host, 46631); + + emit connectClicked(host, port); } PageNetServer::PageNetServer(QWidget* parent) : QWidget(parent)