Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.
Qt-contributors-summit-2012-QtNetwork: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
m (Categorize) |
||
(3 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
{{Cleanup | reason=Auto-imported from ExpressionEngine.}} | |||
[[Category:QtCS2012]] | |||
[[Category:Developing Qt::Network]] | |||
=Discussion Topics= | =Discussion Topics= | ||
Brainstorm of items to discuss at the QtNetwork session (and hack sessions if there is too much)<br /> Please add any topics you think should be discussed.<br /> Priority for the main session is topics relevant to developers of other modules that use QtNetwork<br /> We can schedule in hack sessions for the internals, but they should still be added here. | Brainstorm of items to discuss at the QtNetwork session (and hack sessions if there is too much)<br /> Please add any topics you think should be discussed.<br /> Priority for the main session is topics relevant to developers of other modules that use QtNetwork<br /> We can schedule in hack sessions for the internals, but they should still be added here. | ||
=Feature requirements for 5.1 & | =Feature requirements for 5.1 & beyond= | ||
==requirements on QtNetwork by other Qt modules (including add-ons)== | ==requirements on QtNetwork by other Qt modules (including add-ons)== | ||
Line 23: | Line 26: | ||
* Its <span class="caps">API</span> can implement QNetworkProxyFactory::systemProxyForQuery | * Its <span class="caps">API</span> can implement QNetworkProxyFactory::systemProxyForQuery | ||
* Currently we have relatively good support for system proxy on windows and mac, but linux is basic. | * Currently we have relatively good support for system proxy on windows and mac, but linux is basic. | ||
* This library would give us support for <span class="caps">PAC</span> files, <span class="caps">WPAD</span>, and integration with the desktop environment settings | * This library would give us support for <span class="caps">PAC</span> files, <span class="caps">WPAD</span>, and integration with the desktop environment settings "for free" | ||
* Should it be autodetected in configure and enabled if available, or default to off? | * Should it be autodetected in configure and enabled if available, or default to off? | ||
* <span class="caps">API</span> stability – should we wait for a 1.0 release, if not then how should we deal with <span class="caps">BIC</span> changes | * <span class="caps">API</span> stability – should we wait for a 1.0 release, if not then how should we deal with <span class="caps">BIC</span> changes | ||
Line 30: | Line 33: | ||
==pluggable <span class="caps">URL</span> scheme handlers== | ==pluggable <span class="caps">URL</span> scheme handlers== | ||
* This was mentioned at the <span class="caps">LDAP</span> session of last | * This was mentioned at the <span class="caps">LDAP</span> session of last year's QtCS | ||
* Implementing additional <span class="caps">URL</span> schemes through a plugin (e.g. | * Implementing additional <span class="caps">URL</span> schemes through a plugin (e.g. "ldap://") | ||
* public or private <span class="caps">API</span>? (private meaning just for other Qt modules and no BC promise) | * public or private <span class="caps">API</span>? (private meaning just for other Qt modules and no BC promise) | ||
* is it needed yet? | * is it needed yet? | ||
Line 48: | Line 51: | ||
=Unfinished work – priority for 5.1= | =Unfinished work – priority for 5.1= | ||
==Asynchronous authentication / ssl error signals (<span class="caps">QTBUG</span>-19032 & | ==Asynchronous authentication / ssl error signals (<span class="caps">QTBUG</span>-19032 & friends)== | ||
* purpose is for <span class="caps">GUI</span> applications to display dialogs without requiring a nested event loop | * purpose is for <span class="caps">GUI</span> applications to display dialogs without requiring a nested event loop | ||
* ssl error signals are implemented up to the socket layer | * ssl error signals are implemented up to the socket layer | ||
* | * let's work out an architecture & subtasks | ||
==Incomplete QNetworkReplyImpl / backend refactoring== | ==Incomplete QNetworkReplyImpl / backend refactoring== | ||
Line 64: | Line 67: | ||
==Windows native socket engine (<span class="caps">QTBUG</span>-24451)== | ==Windows native socket engine (<span class="caps">QTBUG</span>-24451)== | ||
* | * It's stable if you only use the asynchronous <span class="caps">API</span>, but the blocking <span class="caps">API</span> can fail (lose read events) | ||
* Is there an alternative that can support the full QAbstractSocket <span class="caps">API</span>, '''and''' the QEventLoop <span class="caps">API</span> for suppressing network events. | * Is there an alternative that can support the full QAbstractSocket <span class="caps">API</span>, '''and''' the QEventLoop <span class="caps">API</span> for suppressing network events. | ||
* I/O completion ports were suggested last year, how would these work in combination with Qt event system | * I/O completion ports were suggested last year, how would these work in combination with Qt event system | ||
Line 78: | Line 81: | ||
* There have been deadlocks due to mutex ordering problems. | * There have been deadlocks due to mutex ordering problems. | ||
* Can we improve it without changing the <span class="caps">API</span>? | * Can we improve it without changing the <span class="caps">API</span>? | ||
* My | * My "straw man" is a model used by the <span class="caps">API</span> that is asynchronously coupled to the backend plugins via signals | ||
==Blocking constructors== | ==Blocking constructors== | ||
Line 92: | Line 95: | ||
=List of Attendees= | =List of Attendees= | ||
* Manuel | * Manuel "Sput" Nickschas, mostly interested in roaming/bearer management things |
Latest revision as of 17:11, 6 January 2017
This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine. Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean. |
Discussion Topics
Brainstorm of items to discuss at the QtNetwork session (and hack sessions if there is too much)
Please add any topics you think should be discussed.
Priority for the main session is topics relevant to developers of other modules that use QtNetwork
We can schedule in hack sessions for the internals, but they should still be added here.
Feature requirements for 5.1 & beyond
requirements on QtNetwork by other Qt modules (including add-ons)
- webkit
- qml
- any other modules – what do you need from QtNetwork?
QFtp replacement
- We deprecated QFtp due to quality issues, and removed from the QtNetwork API
- However we still need to support ftp urls in QNetworkAccessManager
- Replacement engine?
- Leave it to fade away?
- usefulness of FTP-TLS?
libproxy for linux?
- Its API can implement QNetworkProxyFactory::systemProxyForQuery
- Currently we have relatively good support for system proxy on windows and mac, but linux is basic.
- This library would give us support for PAC files, WPAD, and integration with the desktop environment settings "for free"
- Should it be autodetected in configure and enabled if available, or default to off?
- API stability – should we wait for a 1.0 release, if not then how should we deal with BIC changes
- Are there reasons not to use it (given it would be possible to configure -no-libproxy to disable it anyway)
pluggable URL scheme handlers
- This was mentioned at the LDAP session of last year's QtCS
- Implementing additional URL schemes through a plugin (e.g. "ldap://")
- public or private API? (private meaning just for other Qt modules and no BC promise)
- is it needed yet?
QNetworkAccessManager::instance()
- how to make QNAM easily sharable
- issues with multiple QNAMs using different bearer configurations
SSL blacklist extensibility
- we added a hardcoded blacklist of certificates due to SSL CA failures in 2011
- discuss how Applications can be updated in the field when we need to blacklist certs again due to another CA failure.
- prefer not to have to rebuild Qt to do it.
Unfinished work – priority for 5.1
Asynchronous authentication / ssl error signals (QTBUG-19032 & friends)
- purpose is for GUI applications to display dialogs without requiring a nested event loop
- ssl error signals are implemented up to the socket layer
- let's work out an architecture & subtasks
Incomplete QNetworkReplyImpl / backend refactoring
- what problem was this trying to solve?
- duplicated code QNetworkReplyImpl vs QNetworkReplyHttpImpl
- if there is a plugin API, this work needs to be completed or abandoned first.
Areas needing attention
Windows native socket engine (QTBUG-24451)
- It's stable if you only use the asynchronous API, but the blocking API can fail (lose read events)
- Is there an alternative that can support the full QAbstractSocket API, and the QEventLoop API for suppressing network events.
- I/O completion ports were suggested last year, how would these work in combination with Qt event system
Bearer API
- Roaming API was only ever implemented by Symbian, which is gone – will other mobile platforms implement this or should it be deprecated?
QNetworkConfigurationManager implementation/design issues
- Initial implementation was not thread safe and crashed
- Current implementation has too many locks (because the locks were added remedially rather than designed in)
- There have been deadlocks due to mutex ordering problems.
- Can we improve it without changing the API?
- My "straw man" is a model used by the API that is asynchronously coupled to the backend plugins via signals
Blocking constructors
- QNetworkConfigurationManager blocks while populating the initial list – this may be slow.
- QSslSocket blocks while loading system CA certificates for the first socket used – this may be slow
- Can we make an opt-in asynchronous startup (signal emitted when ready)
- Would anyone use it?
- What about asynchronous preload?
Using QtNetwork improvements in QtWebkit
List of Attendees
- Manuel "Sput" Nickschas, mostly interested in roaming/bearer management things