summaryrefslogtreecommitdiffstats
path: root/src/network/kernel
Commit message (Collapse)AuthorAgeFilesLines
* Android: Fix unused variable/argument warningsEskil Abrahamsen Blomfeldt2013-09-091-0/+3
| | | | | | | There were a bunch of these in Android specific code. Change-Id: Icf6cda40302171810c1b559f9d442fba6444a3a5 Reviewed-by: BogDan Vatra <bogdan@kde.org>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-08-271-29/+29
|\ | | | | | | | | | | | | Conflicts: examples/widgets/doc/src/addressbook-fr.qdoc Change-Id: Id1196e8e0c6445f1616c3f29234c974d809f8e48
| * Update Linux interface getting to make fewer syscallsThiago Macieira2013-08-241-29/+29
| | | | | | | | | | | | | | | | | | | | | | Each time we call if_nametoindex, if_indextoname or somesuch, the libc needs to open a socket, make an ioctl, and close the socket. Since we've got most of the information we need anyway in the data from getifaddrs(3), let's just use it Change-Id: I572c212a27c4b9ffe57980b36f75bb04e6d5cf29 Reviewed-by: Jonas Gastal <gastal@intel.com> Reviewed-by: Richard J. Moore <rich@kde.org>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-08-141-11/+9
|\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure mkspecs/macx-xcode/Info.plist.app mkspecs/macx-xcode/Info.plist.lib qmake/doc/qmake.qdocconf src/corelib/global/qglobal.h tests/auto/other/exceptionsafety/exceptionsafety.pro tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp Change-Id: I3c769a4a82dc2e99a12c69123fbf17613fd2ac2a
| * Avoid one extra if_indextoname per address in QNetworkInterfaceThiago Macieira2013-08-061-5/+9
| | | | | | | | | | | | | | | | | | | | | | Given an IPv6 address associated with a network interface, there's a fairly high chance (of 100%) that any scope ID found is that of the interface. Change-Id: Id7315473f39b68ee4c169207168dc2e60fd7d570 Reviewed-by: Richard J. Moore <rich@kde.org> Reviewed-by: Peter Hartmann <phartmann@blackberry.com> Reviewed-by: Jonas Gastal <gastal@intel.com>
| * Remove unused socket from QNetworkInterface Unix codeThiago Macieira2013-08-061-6/+0
| | | | | | | | | | | | | | | | | | | | This must be a relic from old code, before I split out the code that uses getifaddrs from the code that doesn't. Change-Id: Ia1265da6921c7c7a3dc97315d98fed50b3d2fe1c Reviewed-by: Richard J. Moore <rich@kde.org> Reviewed-by: Peter Hartmann <phartmann@blackberry.com> Reviewed-by: Jonas Gastal <gastal@intel.com>
* | Make QIPAddress::parseIp6 return the first bad characterThiago Macieira2013-07-201-1/+1
|/ | | | | | | In case of undetermined error, returns end. Change-Id: Ic5d16bab5fc56ad24f19da25f73f9b844ce11d3f Reviewed-by: David Faure (KDE) <faure@kde.org>
* Remove default argument from declarations of qHash as friendGiuseppe D'Angelo2013-07-021-1/+5
| | | | | | | | | | | | | | | It's illegal in C++11: §8.3.6.4 [dcl.fct.default] "If a friend declaration specifies a default argument expression, that declaration shall be a definition and shall be the only declaration of the function or function template in the translation unit." Clang is starting to enforce this, thus it's making qtbase not compiling. Task-number: QTBUG-32100 Change-Id: Ifd9d4f62354d7cf4ccf275f36aab64e05c59efff Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com> Reviewed-by: Mitch Curtis <mitch.curtis@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Doc: added scenario in case of failure QNetorkInterfaceNico Vertriest2013-05-131-1/+1
| | | | | | | Task-number: QTBUG-30301 Change-Id: Id68129737b8d584ad36e6888cd7318badf0b4ae2 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Martin Smith <martin.smith@digia.com>
* QNX host lookup: do not try to load libresolv.so, it is not therePeter Hartmann2013-04-241-1/+1
| | | | | | | | | | Not trying to load the lib saves 30 - 50ms upon an apps' 1st host lookup. Task-number: QTBUG-30809 Change-Id: Id893cec09ff57494776625700c93f7efe96fcc6b Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
* Fix retrieving of the generic system proxy via environment variablesThomas McGuire2013-04-231-1/+5
| | | | | | | | | | | | ignoreProxyFor() always returned true if the no_proxy was not set, which resulted in the first token being an empty QByteArray, causing the endsWith() check to always evaluate to true. Add a unit test that is enabled for those platforms that use the generic system proxy. Change-Id: I6081ad5e0b8e2c3fee1568835907c32bde5b7772 Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
* Merge branch 'dev' into stableOswald Buddenhagen2013-03-2019-69/+69
|\ | | | | | | | | | | | | | | | | | | | | | | This starts Qt 5.1 release cycle Conflicts: src/gui/text/qfontdatabase.cpp src/gui/text/qharfbuzz_copy_p.h src/widgets/kernel/qapplication.cpp src/widgets/kernel/qcoreapplication.cpp Change-Id: I72fbf83ab3c2206aeea1b089428b0fc2a89bd62b
| * Whitespace cleanup: remove trailing whitespaceAxel Waggershauser2013-03-166-22/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove all trailing whitespace from the following list of files: *.cpp *.h *.conf *.qdoc *.pro *.pri *.mm *.rc *.pl *.qps *.xpm *.txt *README excluding 3rdparty, test-data and auto generated code. Note A): the only non 3rdparty c++-files that still have trailing whitespace after this change are: * src/corelib/codecs/cp949codetbl_p.h * src/corelib/codecs/qjpunicode.cpp * src/corelib/codecs/qbig5codec.cpp * src/corelib/xml/qxmlstream_p.h * src/tools/qdoc/qmlparser/qqmljsgrammar.cpp * src/tools/uic/ui4.cpp * tests/auto/other/qtokenautomaton/tokenizers/* * tests/benchmarks/corelib/tools/qstring/data.cpp * util/lexgen/tokenizer.cpp Note B): in about 30 files some overlapping 'leading tab' and 'TAB character in non-leading whitespace' issues have been fixed to make the sanity bot happy. Plus some general ws-fixes here and there as asked for during review. Change-Id: Ia713113c34d82442d6ce4d93d8b1cf545075d11d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
| * Introducing the Qt Android portPaul Olav Tvete2013-03-053-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Based on the Necessitas project by Bogdan Vatra. Contributors to the Qt5 project: BogDan Vatra <bogdan@kde.org> Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> hjk <hjk121@nokiamail.com> Oswald Buddenhagen <oswald.buddenhagen@digia.com> Paul Olav Tvete <paul.tvete@digia.com> Robin Burchell <robin+qt@viroteck.net> Samuel Rødal <samuel.rodal@digia.com> Yoann Lopes <yoann.lopes@digia.com> The full history of the Qt5 port can be found in refs/old-heads/android, SHA-1 249ca9ca2c7d876b91b31df9434dde47f9065d0d Change-Id: Iff1a7b2dbb707c986f2639e65e39ed8f22430120 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * iOS: network should not link against CoreServices on iOSRichard Moe Gustavsen2013-02-271-1/+5
| | | | | | | | | | Change-Id: Ia3e21a3d73f696f0e77c427bdb263333646c48d3 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
| * Allow QHostInfo::lookupHost() with no receiver to warm the DNS cache.Richard Moore2013-02-201-1/+8
| | | | | | | | | | | | | | | | | | This change lets you call QHostInfo::lookupHost() with a null receiver in order to warm up the DNS cache. This allows you to try to get the DNS request in flight early. Change-Id: Icfdd28146479aa534ae9ceb472f75e08aaa39cd2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Remove ifdefs for supporting Mac OS <= 10.5Tor Arne Vestbø2013-02-181-4/+1
| | | | | | | | | | | | | | | | Qt5 requires Mac OS 10.6, so we can remove checks such as if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 Change-Id: Iea21727a277291148704ecf9677ed0b68c24920f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-02-141-1/+1
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/concurrent/doc/qtconcurrent.qdocconf src/corelib/doc/qtcore.qdocconf src/corelib/global/qglobal.h src/dbus/doc/qtdbus.qdocconf src/dbus/qdbusmessage.h src/gui/doc/qtgui.qdocconf src/gui/image/qimagereader.cpp src/network/doc/qtnetwork.qdocconf src/opengl/doc/qtopengl.qdocconf src/opengl/qgl.h src/plugins/platforms/windows/qwindowswindow.cpp src/printsupport/doc/qtprintsupport.qdocconf src/sql/doc/qtsql.qdocconf src/testlib/doc/qttestlib.qdocconf src/tools/qdoc/doc/config/qt-cpp-ignore.qdocconf src/widgets/doc/qtwidgets.qdocconf src/xml/doc/qtxml.qdocconf Change-Id: Ie9a1fa2cc44bec22a0b942e817a1095ca3414629
| * | BB10 systemProxyForQuery: query system proxy also for non-URL requestsPeter Hartmann2013-02-112-4/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... like e.g. in QAbstractSocket::connectToHost(). We can set the scheme on the query URL based on well-known ports; even if the port is not well-known, we can just query the URL anyhow and let the netstatus API resolve the right proxy for us. In addition, return early for local schemes like "file" and "qrc". Task-number: QTBUG-29425 Change-Id: I900f1ecbac6dd380bb8a77470b39de2c07aa7f6e Reviewed-by: Andrey Leonov <aleonov@rim.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
| * | Increase the size of the QHostInfo cache.Richard Moore2013-02-061-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change increases the size of the DNS cache in QHostInfo from 64 entries to 128. Given the figures in the google chrome performance paper http://www.igvita.com/posa/high-performance-networking-in-google-chrome/ this should mean we can cache enough entries to handle 4 tabs at once. Change-Id: I34e32e9e0966473591c59ca5f222623a354650d2 Reviewed-by: Peter Hartmann <phartmann@rim.com>
| * | Remove unused variables and functions from the source codeThiago Macieira2013-02-021-1/+0
| | | | | | | | | | | | | | | | | | Change-Id: I5f37414ee4846b4fe774361f49367bc0d5874039 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
| * | Remove QT_{BEGIN,END}_HEADER macro usageSergio Ahumada2013-01-298-31/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The macro was made empty in ba3dc5f3b56d1fab6fe37fe7ae08096d7dc68bcb and is no longer necessary or used. Discussed-on: http://lists.qt-project.org/pipermail/development/2013-January/009284.html Change-Id: Id2bb2e2cabde059305d4af5f12593344ba30f001 Reviewed-by: Laszlo Papp <lpapp@kde.org> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com> Reviewed-by: hjk <hjk121@nokiamail.com>
* | | Correct sentence in QNetworkProxy::setApplicationProxy() documentation.Mitch Curtis2013-03-061-1/+1
| |/ |/| | | | | | | | | | | Change-Id: I46fa7f814901cbe6a1f8f003f461bf1eee6f8bde Reviewed-by: Shane Kearns <shane.kearns@accenture.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Jonas Gastal <jgastal@gmail.com>
* | Nokia -> Qt ProjectFrederik Gladhorn2013-02-051-1/+1
|/ | | | | Change-Id: Iadd29ee918dc181d2a468f5198e66351c7cb3548 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Update copyright year in Digia's license headersSergio Ahumada2013-01-1825-25/+25
| | | | | Change-Id: Ic804938fc352291d011800d21e549c10acac66fb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Hardcoded url for RFC 1929 QTBUG-28500Nico Vertriest2012-12-111-1/+1
| | | | | | | | | Entered hardcoded url for RFC 1928 QTBUG-28500 Corrected in qtnetworkproxy.cpp Change-Id: Idad0e2294e610095990a65ffc7d5c9c881b09329 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Add more qtbase implictly-shared classes to the listGiuseppe D'Angelo2012-11-302-0/+4
| | | | | | | QText*Format and QDns* ones are still missing. Change-Id: I8e87fba596e87289ca935717e0a90bfc0b0a26c0 Reviewed-by: hjk <qthjk@ovi.com>
* Add QDns* classes to the list of the implicitly shared onesGiuseppe D'Angelo2012-11-301-0/+5
| | | | | | Change-Id: I29dd678a51dc693285c389f235d748120ca58fe1 Reviewed-by: Jeremy Lainé <jeremy.laine@m4x.org> Reviewed-by: hjk <qthjk@ovi.com>
* Remove qSort usages from QDnsLookupGiuseppe D'Angelo2012-11-081-2/+4
| | | | | Change-Id: I2f7dfcfdf13cdd85af5ba251478e10cafe7f649b Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
* Adding PAC and exclusion list support to BlackBerry Qt proxy implementation.Andrey Leonov2012-10-312-4/+26
| | | | | | | The additional proxy functionality is only available starting BPS API version 3.1.1. Change-Id: Iadd2950119fa1dca706e8cd34804b038e3f704bc Reviewed-by: Peter Hartmann <phartmann@rim.com>
* QtNetwork: introduce configure switch to use system proxies by defaultPeter Hartmann2012-10-301-0/+3
| | | | | | | | | | | | This option is opt-in (default: no). When configured with "-proxies-system-default", Qt automatically picks up the system proxies. Change-Id: I8cc002f29587854f448d97117b08c43d8eedec76 Reviewed-by: Shane Kearns <shane.kearns@accenture.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Remove stale QT_MODULE() usage casesKonstantin Ritt2012-10-251-2/+0
| | | | | | | As of Qt5, this macro is defined to be empty; simply get rid of these leftovers. Change-Id: I167ccb4c9e92ec9b5e4faeb02bf9c5ef5d982b50 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix warnings from syncqt.Friedemann Kleint2012-10-131-0/+4
| | | | | | | | Stop processing in internal headers, use correct include syntax. Change-Id: I9dcf1f6f89907986b7b58658be514083f213a3e6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Implementation of the BlackBerry Qt Proxy support.Andrey Leonov2012-10-083-0/+140
| | | | | | | | An implementation for BlackBerry devices based on the BPS netstatus API. Change-Id: I89deed031d2a867bbd6628bee97f61345b58f1ab Reviewed-by: Peter Hartmann <phartmann@rim.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-2232-762/+762
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* Fix doc errors.Frederik Gladhorn2012-09-211-1/+1
| | | | | | Change-Id: I9974d870c081620217582fcb6f8b146d208a471c Reviewed-by: Peter Hartmann <phartmann@rim.com> Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org>
* network: Fix missing or improper include guard in headersSergio Ahumada2012-09-152-4/+7
| | | | | | | | | | Use an include guard in headers to ensure the header is not included more than once. Make the header guard match its file name. Also, cpp files should include their own headers first (but below config.h) Change-Id: Iecf5da23c0f8e6d457f67657b88ef7557bde9669 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Doc: Marked the QUrlInfo class documentation as \internalVenugopal Shivashankar2012-09-131-0/+1
| | | | | | Change-Id: Ib84c9ffc181edf17850d5334c95c035428d31b6c Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Network: Fix gcc warning about conversion from string to wchar *Kai Koehne2012-09-131-2/+2
| | | | | | | | | Fix gcc 4.7 warning: 'deprecated conversion from string constant to 'SEC_WCHAR*' Change-Id: I5df44ffdc0d505789f99b58d68e02b7535ce761b Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Removing duplicate includesSergio Ahumada2012-09-091-1/+0
| | | | | | | Do not include a header more than once Change-Id: Ia2e5d66e72988ad833cf5177a3f8aa988bf510e9 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Use QStringList::join(QChar) overload where applicable [QtNetwork]Marc Mutz2012-09-071-1/+1
| | | | | | | | | | | This is an automated change performing the following replacements: join\("(.)"\) -> join('\1') join\(QLatin1String\("(.)"\)\) -> join(QLatin1Char('\1')) join\(QStringLiteral\("(.)"\)\) -> join(QLatin1Char('\1')) Change-Id: I5b75877ba192fa1357e67fee70dff7c0475991e8 Reviewed-by: João Abecasis <joao.abecasis@nokia.com> Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
* QtNetwork: bypass proxy for local connectionsJulien Brianceau2012-09-071-0/+12
| | | | | | | | | | | | According to Qt doc, "Network proxy is not used if the address used in connectToHost(), bind() or listen() is equivalent to QHostAddress::LocalHost or QHostAddress::LocalHostIPv6. This is not the case in current implementation. Change-Id: I6b8a40c1e8bd8aad9504d8f939b87eda6e93337c Reviewed-by: Richard J. Moore <rich@kde.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
* Add missing QT_{BEGIN,END}_NAMESPACESergio Ahumada2012-08-311-0/+4
| | | | | | | Fix src/network/kernel/qnetworkfunctions_wince.h Change-Id: Ia59c1e67f9409abb97fce3fcaa3840e0d77c0978 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDnsLookupRunnable: replace a volatile bool with an atomic intMarc Mutz2012-08-291-4/+4
| | | | | | | | | | | | Since there is non-atomic data that is protected by 'triedResolve', the (outer) read from triedResolve needs to have acquire, and the store needs to have release semantics. The release implied by the mutex unlock is not good enough because it only synchronises-with the locking of the same mutex, which not all threads execute. Change-Id: If46b3ea6ccfdd66ca41ce44d4f45bef2c2c30f72 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
* QHostInfo: replace a volatile bool with an atomic intMarc Mutz2012-08-292-8/+10
| | | | | | | | | | | | A volatile bool read/store is documented on MSVC to have acquire/release semantics, respectively, but that doesn't need to be true for MinGW, so use explicit memory ordering. Apply the same fix to the Unix implementation, too. Change-Id: Ica466cec50beed830aafa4e3384d82f02e1a47e8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
* QtNetwork: declare some classes as sharedMarc Mutz2012-08-233-1/+18
| | | | | Change-Id: Ib3eaba59836529ad0cf8e4353b54dd0cd31fd1ad Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
* Add Q_DECL_NOTHROW to some qHash functionsThiago Macieira2012-08-201-0/+1
| | | | | | | | | | | | The hashing functions for QDateTime and QHostAddress did not get the noexcept keyword because they might allocate memory. QDateTime doesn't do it now, but it could in the future. QHostAddress does allocate memory today. Change-Id: Ia5f80942944bfc2b8c405306c467bfd88ef0e48c Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Adding missing QT_BEGIN_HEADER/QT_END_HEADERSergio Ahumada2012-07-311-1/+5
| | | | | Change-Id: I1144497ec8376ec41c714b7a55c05637b6feee66 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* QtNetwork: use nullary version of qRegisterMetaType<T>("T")Marc Mutz2012-07-253-1/+5
| | | | | | | | | | | | | | | | | Using the nullary version has the advantage that multiple calls during a program run are much more efficient, since an inlined atomic is used to store the result. It also ensures that Q_DECLARE_METATYPE(T) has been used, whereas qRegisterMetaType<T>("T") will happily register anything. So I've added the macro where it was missing, or moved it to a central place when it existed hidden. In tst_qnetworkreply, this became a bit tricky, because a private header is conditionally included, so moved the Q_DECLARE_METATYPE() into a conditional section, too. Change-Id: I71484523e4277f4697b7d4b2ddc3505375162727 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* removing QT_NO_URLINFO and using QT_NO_FTP insteadTasuku Suzuki2012-07-172-4/+4
| | | | | | | | | | | URLINFO was removed from qfeature.txt but QT_NO_URLINFO macro was not removed. As QUrlInfo is now private and only used for FTP, the class can be disabled when FTP is disabled. Change-Id: Ic63b066f8ff9ad1eea0073ab75b622e5739ac5a8 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com> Reviewed-by: Jonas Gastal <jgastal@profusion.mobi> Reviewed-by: Shane Kearns <shane.kearns@accenture.com>