diff -r abbed5a4b42a -r 8d540f55e491 networkprotocols/tcpipv4v6prt/src/res.cpp --- a/networkprotocols/tcpipv4v6prt/src/res.cpp Tue Aug 31 16:45:15 2010 +0300 +++ b/networkprotocols/tcpipv4v6prt/src/res.cpp Wed Sep 01 12:33:58 2010 +0100 @@ -268,6 +268,8 @@ public: void NoDndAvailable(); RTimeout iTimeout; +private: + TInt iFlowRequestType; //< = 0 for IMPLICIT, 1 for SUBCONNECTION EXPLICIT, 2 for EXPLICIT }; // CHostResolverLinkage @@ -1169,6 +1171,8 @@ // Complete the request with network id // iRequest.iId = iCurrentId; + // Set the flow request type to the DND request message + iRequest.iFlowRequestType = iFlowRequestType; #ifdef SYMBIAN_DNS_PUNYCODE iRequest.iScope |= EScopeType_NET; #else @@ -1216,14 +1220,18 @@ return KErrArgument; } } - else - if (aName == static_cast(KSoGetErrorCode)) + else if (aName == static_cast(KSoGetErrorCode)) { // Return a TCP/IP failure code appropriate to the last operation. // Kludge - SetOption does not allow for any return value via aOption (being const), so // return a positive value representing the error code. return (iRequest.iType == KDnsRequestType_GetByAddress) ? -KErrDndAddrNotFound : -KErrDndNameNotFound; } + else if (aName == KSoFlowRequestType) + { + // Receive the flow request passed on from esock layer to the resolver + iFlowRequestType = *reinterpret_cast(aOption.Ptr()); + } } #else