mirror of
https://bitbucket.org/smil3y/katie.git
synced 2025-02-24 02:42:55 +00:00
do not manually set the socket state and error of QTcpServer
that means that once the socket engine is closed the error becomes unknown tho Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
26907fbee7
commit
67b6c14005
1 changed files with 9 additions and 25 deletions
|
@ -102,12 +102,8 @@ public:
|
||||||
quint16 port;
|
quint16 port;
|
||||||
QHostAddress address;
|
QHostAddress address;
|
||||||
|
|
||||||
QAbstractSocket::SocketState state;
|
|
||||||
QAbstractSocketEngine *socketEngine;
|
QAbstractSocketEngine *socketEngine;
|
||||||
|
|
||||||
QAbstractSocket::SocketError serverSocketError;
|
|
||||||
QString serverSocketErrorString;
|
|
||||||
|
|
||||||
int maxConnections;
|
int maxConnections;
|
||||||
|
|
||||||
// from QAbstractSocketEngineReceiver
|
// from QAbstractSocketEngineReceiver
|
||||||
|
@ -121,9 +117,7 @@ public:
|
||||||
*/
|
*/
|
||||||
QTcpServerPrivate::QTcpServerPrivate()
|
QTcpServerPrivate::QTcpServerPrivate()
|
||||||
: port(0),
|
: port(0),
|
||||||
state(QAbstractSocket::UnconnectedState),
|
|
||||||
socketEngine(nullptr),
|
socketEngine(nullptr),
|
||||||
serverSocketError(QAbstractSocket::UnknownSocketError),
|
|
||||||
maxConnections(30)
|
maxConnections(30)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -203,7 +197,7 @@ QTcpServer::~QTcpServer()
|
||||||
bool QTcpServer::listen(const QHostAddress &address, quint16 port)
|
bool QTcpServer::listen(const QHostAddress &address, quint16 port)
|
||||||
{
|
{
|
||||||
Q_D(QTcpServer);
|
Q_D(QTcpServer);
|
||||||
if (Q_UNLIKELY(d->state == QAbstractSocket::ListeningState)) {
|
if (Q_UNLIKELY(isListening())) {
|
||||||
qWarning("QTcpServer::listen() called when already listening");
|
qWarning("QTcpServer::listen() called when already listening");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -211,8 +205,6 @@ bool QTcpServer::listen(const QHostAddress &address, quint16 port)
|
||||||
delete d->socketEngine;
|
delete d->socketEngine;
|
||||||
d->socketEngine = new QAbstractSocketEngine(this);
|
d->socketEngine = new QAbstractSocketEngine(this);
|
||||||
if (!d->socketEngine->initialize(QAbstractSocket::TcpSocket, address.protocol())) {
|
if (!d->socketEngine->initialize(QAbstractSocket::TcpSocket, address.protocol())) {
|
||||||
d->serverSocketError = d->socketEngine->error();
|
|
||||||
d->serverSocketErrorString = d->socketEngine->errorString();
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -227,21 +219,16 @@ bool QTcpServer::listen(const QHostAddress &address, quint16 port)
|
||||||
d->socketEngine->setOption(QAbstractSocketEngine::AddressReusable, 1);
|
d->socketEngine->setOption(QAbstractSocketEngine::AddressReusable, 1);
|
||||||
|
|
||||||
if (!d->socketEngine->bind(address, port)) {
|
if (!d->socketEngine->bind(address, port)) {
|
||||||
d->serverSocketError = d->socketEngine->error();
|
|
||||||
d->serverSocketErrorString = d->socketEngine->errorString();
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!d->socketEngine->listen()) {
|
if (!d->socketEngine->listen()) {
|
||||||
d->serverSocketError = d->socketEngine->error();
|
|
||||||
d->serverSocketErrorString = d->socketEngine->errorString();
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
d->socketEngine->setReceiver(d);
|
d->socketEngine->setReceiver(d);
|
||||||
d->socketEngine->setReadNotificationEnabled(true);
|
d->socketEngine->setReadNotificationEnabled(true);
|
||||||
|
|
||||||
d->state = QAbstractSocket::ListeningState;
|
|
||||||
d->address = d->socketEngine->localAddress();
|
d->address = d->socketEngine->localAddress();
|
||||||
d->port = d->socketEngine->localPort();
|
d->port = d->socketEngine->localPort();
|
||||||
|
|
||||||
|
@ -283,8 +270,6 @@ void QTcpServer::close()
|
||||||
d->socketEngine->deleteLater();
|
d->socketEngine->deleteLater();
|
||||||
d->socketEngine = 0;
|
d->socketEngine = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
d->state = QAbstractSocket::UnconnectedState;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -320,11 +305,9 @@ bool QTcpServer::setSocketDescriptor(int socketDescriptor)
|
||||||
delete d->socketEngine;
|
delete d->socketEngine;
|
||||||
d->socketEngine = new QAbstractSocketEngine(this);
|
d->socketEngine = new QAbstractSocketEngine(this);
|
||||||
if (!d->socketEngine->initialize(socketDescriptor, QAbstractSocket::ListeningState)) {
|
if (!d->socketEngine->initialize(socketDescriptor, QAbstractSocket::ListeningState)) {
|
||||||
d->serverSocketError = d->socketEngine->error();
|
|
||||||
d->serverSocketErrorString = d->socketEngine->errorString();
|
|
||||||
#if defined (QTCPSERVER_DEBUG)
|
#if defined (QTCPSERVER_DEBUG)
|
||||||
qDebug("QTcpServer::setSocketDescriptor(%i) failed (%s)", socketDescriptor,
|
qDebug("QTcpServer::setSocketDescriptor(%i) failed (%s)", socketDescriptor,
|
||||||
d->serverSocketErrorString.toLatin1().constData());
|
d->socketEngine->errorString().toLatin1().constData());
|
||||||
#endif
|
#endif
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -332,7 +315,6 @@ bool QTcpServer::setSocketDescriptor(int socketDescriptor)
|
||||||
d->socketEngine->setReceiver(d);
|
d->socketEngine->setReceiver(d);
|
||||||
d->socketEngine->setReadNotificationEnabled(true);
|
d->socketEngine->setReadNotificationEnabled(true);
|
||||||
|
|
||||||
d->state = d->socketEngine->state();
|
|
||||||
d->address = d->socketEngine->localAddress();
|
d->address = d->socketEngine->localAddress();
|
||||||
d->port = d->socketEngine->localPort();
|
d->port = d->socketEngine->localPort();
|
||||||
|
|
||||||
|
@ -390,12 +372,10 @@ QHostAddress QTcpServer::serverAddress() const
|
||||||
bool QTcpServer::waitForNewConnection(int msec, bool *timedOut)
|
bool QTcpServer::waitForNewConnection(int msec, bool *timedOut)
|
||||||
{
|
{
|
||||||
Q_D(QTcpServer);
|
Q_D(QTcpServer);
|
||||||
if (d->state != QAbstractSocket::ListeningState)
|
if (!isListening())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!d->socketEngine->waitForRead(msec, timedOut)) {
|
if (!d->socketEngine->waitForRead(msec, timedOut)) {
|
||||||
d->serverSocketError = d->socketEngine->error();
|
|
||||||
d->serverSocketErrorString = d->socketEngine->errorString();
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -532,7 +512,9 @@ int QTcpServer::maxPendingConnections() const
|
||||||
*/
|
*/
|
||||||
QAbstractSocket::SocketError QTcpServer::serverError() const
|
QAbstractSocket::SocketError QTcpServer::serverError() const
|
||||||
{
|
{
|
||||||
return d_func()->serverSocketError;
|
Q_D(const QTcpServer);
|
||||||
|
Q_CHECK_SOCKETENGINE(QAbstractSocket::UnknownSocketError);
|
||||||
|
return d_func()->socketEngine->error();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -543,7 +525,9 @@ QAbstractSocket::SocketError QTcpServer::serverError() const
|
||||||
*/
|
*/
|
||||||
QString QTcpServer::errorString() const
|
QString QTcpServer::errorString() const
|
||||||
{
|
{
|
||||||
return d_func()->serverSocketErrorString;
|
Q_D(const QTcpServer);
|
||||||
|
Q_CHECK_SOCKETENGINE(tr("Unknown error"));
|
||||||
|
return d->socketEngine->errorString();
|
||||||
}
|
}
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
Loading…
Add table
Reference in a new issue