summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorShane Kearns <shane.kearns@accenture.com>2010-12-10 10:27:32 (GMT)
committerShane Kearns <shane.kearns@accenture.com>2010-12-10 10:27:32 (GMT)
commitcb7a89049f1e41edf02aaab56a00cef8c6005eba (patch)
treee837ec91db9c6118f17cf777edaaac25b1fc7d1a /src
parent9c3967b7738b50655a7b9d6a5a0e89fdf2afc1df (diff)
downloadQt-cb7a89049f1e41edf02aaab56a00cef8c6005eba.zip
Qt-cb7a89049f1e41edf02aaab56a00cef8c6005eba.tar.gz
Qt-cb7a89049f1e41edf02aaab56a00cef8c6005eba.tar.bz2
Fixes for socket engine autotest failures
Reviewed-by: Markus Goetz
Diffstat (limited to 'src')
-rw-r--r--src/corelib/kernel/qcore_symbian_p.cpp2
-rw-r--r--src/network/socket/qsymbiansocketengine.cpp10
-rw-r--r--src/network/socket/qsymbiansocketengine_p.h4
3 files changed, 11 insertions, 5 deletions
diff --git a/src/corelib/kernel/qcore_symbian_p.cpp b/src/corelib/kernel/qcore_symbian_p.cpp
index ede8464..fdae31b 100644
--- a/src/corelib/kernel/qcore_symbian_p.cpp
+++ b/src/corelib/kernel/qcore_symbian_p.cpp
@@ -283,7 +283,7 @@ int QSymbianSocketManager::lookupSocket(const RSocket& socket) const {
bool QSymbianSocketManager::lookupSocket(int fd, RSocket& socket) const {
QMutexLocker l(&iMutex);
- int id = fd + socket_offset;
+ int id = fd - socket_offset;
if(!reverseSocketMap.contains(id))
return false;
socket = reverseSocketMap.value(id);
diff --git a/src/network/socket/qsymbiansocketengine.cpp b/src/network/socket/qsymbiansocketengine.cpp
index 602df5c..b63dbf6 100644
--- a/src/network/socket/qsymbiansocketengine.cpp
+++ b/src/network/socket/qsymbiansocketengine.cpp
@@ -641,6 +641,10 @@ bool QSymbianSocketEngine::bind(const QHostAddress &address, quint16 port)
d->setPortAndAddress(nativeAddr, port, address);
TInt err = d->nativeSocket.Bind(nativeAddr);
+#ifdef __WINS__
+ if (err == KErrArgument) // winsock prt returns wrong error code
+ err = KErrInUse;
+#endif
if (err) {
d->setError(err);
@@ -781,6 +785,8 @@ qint64 QSymbianSocketEngine::writeDatagram(const char *data, qint64 len,
const QHostAddress &host, quint16 port)
{
Q_D(QSymbianSocketEngine);
+ Q_CHECK_VALID_SOCKETLAYER(QNativeSocketEngine::writeDatagram(), -1);
+ Q_CHECK_TYPE(QNativeSocketEngine::writeDatagram(), QAbstractSocket::UdpSocket, -1);
TPtrC8 buffer((TUint8*)data, (int)len);
TInetAddr addr;
d->setPortAndAddress(addr, port, host);
@@ -940,9 +946,9 @@ qint64 QSymbianSocketEngine::write(const char *data, qint64 len)
Q_D(QSymbianSocketEngine);
TPtrC8 buffer((TUint8*)data, (int)len);
TSockXfrLength sentBytes = 0;
- TRequestStatus status; //TODO: OMG sync send!
+ TRequestStatus status;
d->nativeSocket.Send(buffer, 0, status, sentBytes);
- User::WaitForRequest(status);
+ User::WaitForRequest(status); //TODO: on emulator this blocks for write >16kB (non blocking IO not implemented properly?)
TInt err = status.Int();
if (err) {
diff --git a/src/network/socket/qsymbiansocketengine_p.h b/src/network/socket/qsymbiansocketengine_p.h
index 2d5bcd8..bc85f9c 100644
--- a/src/network/socket/qsymbiansocketengine_p.h
+++ b/src/network/socket/qsymbiansocketengine_p.h
@@ -172,8 +172,8 @@ private:
QReadNotifier* iReadN;
QWriteNotifier* iWriteN;
QExceptionNotifier* iExcN;
- bool m_inSocketEvent; // TODO ?
- bool m_deleteLater; // TODO ?
+ bool m_inSocketEvent;
+ bool m_deleteLater;
RSocket &m_socket;
TUint m_selectFlags;