networkprotocols/tcpipv4v6prt/src/res.cpp
branchRCL_3
changeset 22 8d540f55e491
parent 21 abbed5a4b42a
--- 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<TUint>(KSoGetErrorCode))
+		else if (aName == static_cast<TUint>(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<const TInt*>(aOption.Ptr());
+		    }
       	}
 
 #else