| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Pass the shared network session pointer into the QSymbianHostResolver
(which maintains a reference for its lifetime). This is used to open
the RHostResolver handle, in order to get a host resolver which is
associated with a particular session.
The session is obtained from the _q_networksession property of the
QAbstractSocket, as in the symbian socket engine
Reviewed-by: Markus Goetz
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
It was hanging because although the error flags were set, the callback
was not emitted and nothing was done with the return value from the
function.
Now, it sets the state to error, and self completes - so that the
completion through RunL is used as normal. Because the state is error,
the processing of name/address is skipped and the error string is not
rewritten.
Note, error being detected at this point is only common when using an
explicit network session (as RHostResolver::Open can fail if the
RConnection is in the wrong state)
Reviewed-by: Markus Goetz
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Symbian host info implementation was using default constructor for
the results, which sets the id to -1, and storing the id seperately.
Changed this to use the constructor that specifies the id, and use the
id inside the results instead of storing it separately (just a change
to the accessor function)
Reviewed-by: Markus Goetz
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
As the symbian socket engine is driven by an active object in the
QtNetwork dll, this needs to hook into the event dispatcher in the
QtCore dll.
The QActiveObject base class is now a private export from QtCore
The method of deferring socket events now works with any kind of
QActiveObject, and not only the QSocketActiveObject (which handles
"open C" sockets)
The base class has a new function, to check if socket events are blocked.
If so, it adds the active object to the deferred queue.
The derived class should return from it's RunL in this case, which will
be called again later. (same usage as the maybeQueueForLater function)
reactivateAndComplete function in the event dispatcher is changed to
complete the active object again with the same status code as originally.
Previously it always used KErrNone, which is not ok for QAsyncSelect as
it needs to check the error code from the asynchronous call.
Reviewed-by: Markus Goetz
Reviewed-by: mread
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Reviewed-by: Shane Kearns
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
For IPv6 interfaces, the network mask is reported correctly, so we use
that.
For IPv4 interfaces, the network mask is reported as 0.0.0.0 so the
existing workaround to get the netmask from routes is used.
For loopback interfaces, the mask can be statically determined.
Skip checking the routes if proper masks were reported for all the
interfaces.
Added a helper function for converting TInetAddr -> QHostAddress using
the constructors that take binary data. (better than conversion to/from
strings)
Task-number: QTBUG-18137
Reviewed-by: Markus Goetz
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Added a mutex to QNetworkSessionPrivate
Lock the mutex in the symbian bearer plugin for functions that change
the validity of the RConnection.
Added factory functions to open an RSocket or RHostResolver, which lock
the mutex before the esock function calls. If there is no RConnection,
then KErrNotReady is returned (the same as when there is an RConnection
but it has not been started).
Task-number: QTBUG-18143
Reviewed-by: Markus Goetz
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Reviewed-by: Markus Goetz
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Instead of creating socket notifiers and sending faked events to them,
call the engine's notification functions directly.
Reviewed-by: Markus Goetz
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
In the unix socket engine, EADDRNOTAVAIL is returned by the native call
when attempting to bind to a non existant interface. On symbian, the
generic KErrNotFound is returned.
Specifically for bind() convert KErrNotFound to the expected error code
QAbstractSocket::SocketAddressNotAvailableError which is relied on by
autotest (and possibly but unlikely, existing applications)
Reviewed-by: Markus Goetz
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
QNetworkAccessBackend has an optimisation to not start the bearer when
the destination is localhost. On symbian, if the bearer is specified but
not started, then socket creation will fail.
To fix this, delay pushing the network session until start() is called,
at which point we know if the localhost optmisation will be applied or
not.
When using localhost, don't specify any network session - symbian socket
engine will create the socket successfully in thie case.
Reviewed-by: Markus Goetz
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Reviewed-by: Markus Goetz
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
QHttpThreadDelegate::abortRequest was deleting itself, but not exiting
the event loop. For the synchronous usage, both these are incorrect.
Without exiting the event loop, the main thread waits forever.
If it deletes itself, then the main thread will access the deleted memory
on return (the delegate->incomingErrorCode class member) which can crash
with frequency depending on heap implementation.
With this change, abort acts more like the synchronousFinishedWithErrorSlot.
Reviewed-by: Markus Goetz
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Activated by defining QHTTPTHREADDELEGATE_DEBUG
Reviewed-by: Markus Goetz
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
The proxy socket engines forward the network session to the "real" socket
they use natively.
Reviewed-by: Markus Goetz
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Reviewed-by: Markus Goetz
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Reviewed-by: Markus Goetz
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
RTimer is only usable in the thread it was created.
Reviewed-by: Markus Goetz
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
The http socket engine was hiding errors other than RemoteHostClosedError.
This caused problems, because for other errors, the low level socket is
still closed in the native socket engine. By not emitting the read
notification, the error was never informed to QAbstractSocket and as a
result, the application never gets the disconnected signal.
Reviewed-by: Martin Petersson
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Basically the same as f86e014bb6f2754bfed33106021a809ca8c2ce73.
The declarations were appearing twice in the header file after merging
Reviewed-by: Trust Me
|
| | |\ \ \ \
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
scm.dev.troll.no:qt/qt-symbian-network into symbian-socket-engine
Conflicts:
src/network/access/qnetworkaccessmanager.cpp
tests/auto/qsslsocket/tst_qsslsocket.cpp
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Symbian workarounds are better in the symbian socket engine than
generic layer, where this is possible.
Reviewed-by: Markus Goetz
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
When starting a connection implicitly, datagrams fail with KErrWouldBlock
on S60 5.0 and earlier. On symbian 3, they are dropped without error, but
the bytes written is set to 0.
Due to an apparent bug in symbian, the first packet is failed/dropped on
a UDP socket even if the bearer is up due to existing TCP connection.
With blocking sockets or explicit RConnection usage, this doesn't happen.
Reviewed-by: Markus Goetz
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
qtcpsocket autotest checks for a specific error
Reviewed-by: Markus Goetz
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
This ensures the specified QNetworkSession from the QNetworkAccessManager
is used to route the packets, when using a SOCKS proxy.
Reviewed-by: Markus Goetz
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Symbian API RecvOneOrMore only supports stream oriented sockets.
So for UDP we use RecvFrom instead and discard the source address.
Reviewed-by: Markus Goetz
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Mistake in the qfilesystemiterator_symbian implementation.
Readable without Writable was thought to mean show only read-only files,
but this isn't the expected behaviour of QDir[Iterator]
Added an autotest, as this was only covered by ssl tests in the network
layer.
Reviewed-by: joao
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Reviewed-by: Markus Goetz
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Because of the shared QNetworkSession, we need to disconnect the signals
before detaching from the session. Otherwise we may receive signals from
an old session after switching configurations.
Also, when a session is connected, we get both the state change (connected)
and the opened signals from the session. This needs to be distinguished
from the roaming->connected state change to avoid getting the
networkSessionConnected signal twice.
Reviewed-by: Markus Goetz
Task-Number: QTBUG-16901
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Reviewed-by: Markus Goetz
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
QObject and CBase both expect to be the root class of the object hierarchy
so it can cause problems if they are used in multiple inheritance.
Refactored the CActive used for starting RConnection into a helper class.
Reviewed-by: Markus Goetz
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
The implementation was opening RConnection handles on top of previous
instances, and not closing RConnection handles. Both of these cause a
resource leak in the socket server which cannot clean up the connection
until the Qt process has exited.
After a lot of this (which could be triggered by the QNetworkReply auto
test), the socket server may run out of memory resulting in all socket
operations failing.
Reviewed-by: Markus Goetz
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Qt no longer uses open C sockets
Reviewed-by: Markus Goetz
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Implemented a tunnel to get the QNetworkSession from QNetworkAccessManager
down to the socket engine. This is currently a private API for QNAM.
This patch only implements the FTP backend - the other backends are to
follow.
On Symbian, the native socket engine will extract the native session
(RConnection) from the QNetworkSession implementation, and use that to
open sockets using the explicitly specified session.
When no session is specified on the socket (default for networking usage
outside of QNAM) then the socket is opened with no RConnection specified,
which allows the IP stack to find any route via an open interface.
The QFtp autotest is enhanced to test QFtp with an explicit session as well
as implicit connectivity (where a QNetworkSession is opened by the user,
and then QFtp is used without a specified connection).
This autotest gives better coverage than the FTP test cases in QNetworkReply.
Reviewed-by: Markus Goetz
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
One of the qftp test cases calls processEvents() in a tight loop instead
of using an event loop. This was causing the application to hang on symbian
as it blocked a lower priority system thread and the WLAN connection
never completed.
Although calling processEvents in a tight loop is bad practice, it works
on other OS where thread priorities are dynamic.
Reviewed-by: mread
|
| | | |\ \ \ \
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Conflicts:
src/network/access/qnetworkaccessmanager.cpp
src/network/bearer/qnetworksession.cpp
src/network/kernel/qnetworkproxy_symbian.cpp
src/network/socket/qnativesocketengine_unix.cpp
tests/auto/platformsocketengine/tst_platformsocketengine.cpp
|
| | | | | | | | |
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
1. QNetworkSession being deleted from the closed signal caused data
abort or E32User-CBase 49 panics. (both observed)
2. Potential E32User-CBase 46 panic in
ConnectionProgressNotifier::StartNotifications()
Reviewed-by: Aaron Tunney
Reviewed-By: Markus Goetz
Task-Number: QTBUG-17196
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Opening "searchpath:/file" and other non clean paths was failing
Reviewed-by: joao
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Reviewed-by: Markus Goetz
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Reviewed-by: Markus Goetz
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Reviewed-by: Markus Goetz
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
When the application did not set the mandatory content-type header for
POST requests, Qt was putting in application/x-www-urlencoded. While
this is the default for HTML forms, it isn't valid because Qt was not
also encoding the data.
Reviewed-by: Markus Goetz
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
The low level socket option returns the size including IP headers, as
there is an option in receive to include headers in the datagram.
This is OK for a "size will not exceed" metric for buffer allocation,
but Qt relies on it being an accurate size.
Open C did this by subtracting 28, but that isn't valid for IPv6
which has a 40 byte header. (we can't tell whether the buffered datagram
was received over IPv4 or IPv6)
To fix this, do a read with the peek option set, and only care about the
size. In future it would be good to not peek, but rather return this buffer
to a following call to readDatagram.
Reviewed-by: Aaron Tunney
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Reviewed-by: Aaron Tunney
Reviewed-by: Markus Goetz
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Reviewed-by: Markus Goetz
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Reviewed-by: Markus Goetz
|