<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Windows Core Networking : WinHttp</title><link>http://blogs.msdn.com/wndp/archive/tags/WinHttp/default.aspx</link><description>Tags: WinHttp</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>HTTP Connection Management</title><link>http://blogs.msdn.com/wndp/archive/2009/05/08/http-connection-management.aspx</link><pubDate>Fri, 08 May 2009 19:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9597273</guid><dc:creator>AriPernick</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wndp/comments/9597273.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wndp/commentrss.aspx?PostID=9597273</wfw:commentRss><description>&lt;p&gt;HTTP is a request/response protocol. You request some resource like the HTML of a webpage and the response comes back with the HTML attached.&amp;#160; As each request is sent on a connection, the complete response must be read from the connection before the next response can be read. (There is an optimization where you make more requests on a connection before receiving the full response to the previous requests known as pipelining. However it doesn’t change the need to receive all the data from the previous requests first.)&lt;/p&gt;  &lt;p&gt;So if an application is asking for another request to a server while the current one is in progress, what’s a HTTP Client API to do? Well, it can either wait till the connection is available or start a new connection. This decision is mostly controlled by a configurable maximum number of simultaneous connections to a server.&lt;/p&gt;  &lt;p&gt;With that in mind, how should the following customer question get answered?&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;My client application’s performance is getting impacted by WinInet opening new SSL connections to my server rather than reusing the existing connection. How do I fix this?&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9597273" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wndp/archive/tags/WinINet/default.aspx">WinINet</category><category domain="http://blogs.msdn.com/wndp/archive/tags/WinHttp/default.aspx">WinHttp</category></item><item><title>WinHTTP Questions: About Callbacks</title><link>http://blogs.msdn.com/wndp/archive/2008/03/03/WinHTTP-Qustions-About-Callbacks.aspx</link><pubDate>Mon, 03 Mar 2008 20:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8006772</guid><dc:creator>wndpteam</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wndp/comments/8006772.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wndp/commentrss.aspx?PostID=8006772</wfw:commentRss><description>&lt;P&gt;Hello All, I am continuing the "WinHTTP Questions" series with some questions on WinHTTP callbacks. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Is it correct that WinHTTP Callbacks will occur *only* during an in-progress WinHTTP operation? Is it possible that an external event (such as the remote server resetting the underlying tcp connection) result in a callback even when there's no outstanding operation?&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;No. For external callbacks, WinHTTP will indicate informational callbacks only when there is a pending operation. Essentially, there are two types of callbacks in WinHTTP. Completion callbacks and Informational callbacks. &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Completion callbacks are invoked as a completion of a pending API call e.g. read complete is invoked when the read API completes. Similarly, handle-closed callback is invoked in response to the close handle API. &lt;/LI&gt;
&lt;LI&gt;Informational callbacks, on the other hand, are invoked to inform the application about important events seen during the processing of a call.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;So, when an async API is invoked and it returns TRUE, the application will receive zero or more informational callbacks and then a completion callback. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;When an operation like WinHttpReadData fails immediately (i.e., this call returned FALSE), does it guarantee that user will not receive a STATUS_REQUEST_ERROR callback?&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;Yes. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Does WinHTTP synchronize WinhttpSetStatusCallback with worker threads? Here is our usage scenario: We are implementing a DLL that get dynamically loaded implements an asynchronous Download function with progress notifications and supports a Cancel call. After Cancel or Download completion our DLL should be able to be safely unloaded. Cancel calls WinHttpSetStatusCallback to unregister notifications, closes the request, connection and sessions handles. However we occasionally still get status callbacks after the DLL is unloaded.&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;No, WinHTTP does not synchronize WinHttpSetStatusCallback with worker threads. For e.g.&amp;nbsp; If a&amp;nbsp; callback originating in another thread is in progress when an application calls WinHttpSetStatusCallback, the application still receives a callback notification even after WinHttpSetStatusCallback successfully sets the callback function to NULL and returns. The thread will continue to process, so one will need to wait until the current call finishes. &lt;/P&gt;
&lt;P&gt;Please also refer to the following links for more on callbacks. &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/aa383917(VS.85).aspx" mce_href="http://msdn2.microsoft.com/en-us/library/aa383917(VS.85).aspx"&gt;WINHTTP_STATUS_CALLBACK Callback Function (MSDN)&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/aa384115(VS.85).aspx" mce_href="http://msdn2.microsoft.com/en-us/library/aa384115(VS.85).aspx"&gt;WinHttpSetStatusCallback Function (MSDN)&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Next time we will go a bit deeper into safe request cancellation.&lt;/P&gt;
&lt;P&gt;&amp;nbsp; -- Deepak &amp;amp; Ari&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8006772" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wndp/archive/tags/WinHttp/default.aspx">WinHttp</category></item><item><title>WinHTTP Questions - async close on a sync request</title><link>http://blogs.msdn.com/wndp/archive/2008/02/25/winhttp-questions-async-close-on-a-sync-request.aspx</link><pubDate>Mon, 25 Feb 2008 18:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7839115</guid><dc:creator>wndpteam</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wndp/comments/7839115.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wndp/commentrss.aspx?PostID=7839115</wfw:commentRss><description>&lt;P&gt;Hello, my name is Deepak and I'm a SDET in serviceability. We handle a bunch of questions from developers using WinHTTP, and thought we might share then in a new posting series, "WinHTTP Questions".&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Can I cancel a synchronous WinHttpSendRequest call by closing the request handle from a different thread? Or, are there any requirements that I need to use the asynchronous WinHttpSendRequest if I need the ability to cancel it?&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;The short answer is &lt;STRONG&gt;don't do that&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;Let's think about the implications of this proposed code. Thread 1 starts a synchronous request and Thread 2 comes along an issues a close. We can't synchronize between Thread 1 and Thread 2 by definition because Thread 1's call is synchronous, we either can &lt;EM&gt;deterministically&lt;/EM&gt; call the close before the request call starts or after the call is completed. So to close the handle during the call results in a race condition. If thread 2 attempts to close the connection during the call, the handle passed in to WinHttpSendRequest may become invalid before WinHttp has a chance to work with it. While you might get lucky, you might also non-deterministically get a crash or memory corruption.&lt;/P&gt;
&lt;P&gt;&amp;nbsp; -- Deepak and Ari&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7839115" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wndp/archive/tags/WinHttp/default.aspx">WinHttp</category></item><item><title>Ask Perf explains how winInet is used</title><link>http://blogs.msdn.com/wndp/archive/2007/08/21/ask-perf-explains-how-wininet-is-used.aspx</link><pubDate>Tue, 21 Aug 2007 20:37:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4496765</guid><dc:creator>wndpteam</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wndp/comments/4496765.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wndp/commentrss.aspx?PostID=4496765</wfw:commentRss><description>&lt;p&gt;Ask Perf, the blog of the Enterprise Platforms Windows Server Performance Team, is spending some time explaining a bit of how WinInet/WinHTTP and their surrounding components work with each other. &lt;a href="http://blogs.technet.com/askperf/archive/2007/08/21/under-the-hood-wininet.aspx"&gt;Go check it out&lt;/a&gt;!&lt;/p&gt; &lt;p&gt;&amp;nbsp; -- Ari&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4496765" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wndp/archive/tags/WinINet/default.aspx">WinINet</category><category domain="http://blogs.msdn.com/wndp/archive/tags/WinHttp/default.aspx">WinHttp</category></item><item><title>WinHttp Configuration for Windows Vista</title><link>http://blogs.msdn.com/wndp/archive/2007/03/21/winhttp-configuration-for-windows-vista.aspx</link><pubDate>Wed, 21 Mar 2007 23:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1927468</guid><dc:creator>wndpteam</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/wndp/comments/1927468.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wndp/commentrss.aspx?PostID=1927468</wfw:commentRss><description>&lt;P mce_keep="true"&gt;In my previous posts, I described the new WinHttp &lt;A class="" href="http://blogs.msdn.com/wndp/archive/2006/05/08/592895.aspx" mce_href="http://blogs.msdn.com/wndp/archive/2006/05/08/592895.aspx"&gt;proxy&lt;/A&gt;, &lt;A class="" href="http://blogs.msdn.com/wndp/archive/2006/05/09/594253.aspx" mce_href="http://blogs.msdn.com/wndp/archive/2006/05/09/594253.aspx"&gt;tracing&lt;/A&gt; and &lt;A class="" href="http://blogs.msdn.com/wndp/archive/2006/05/12/596540.aspx" mce_href="http://blogs.msdn.com/wndp/archive/2006/05/12/596540.aspx"&gt;client certificate&lt;/A&gt; configuration story for Windows Vista Beta2. The syntax of the netsh commands used to configure WinHttp proxy and tracing settings have changed for Vista RTM and this post describes the changes in command syntax since the beta. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;WinHttp Netsh Context&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;From the previous posts you might be aware that in Windows Vista, the WinHttp proxy and tracing configuration tools, proxycfg.exe and winhttptracecfg.exe respectively, have been replaced with netsh commands. All the WinHttp related netsh commands live under the “winhttp” netsh context. To navigate to it, open an administrator command prompt and type “netsh” then “winhttp”: 
&lt;BLOCKQUOTE&gt;&lt;CODE&gt;
&lt;P&gt;C:\Windows\system32&amp;gt;netsh 
&lt;P&gt;netsh&amp;gt;winhttp 
&lt;P&gt;netsh winhttp&amp;gt;&lt;/P&gt;&lt;/CODE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;You can type “?” in this context and display the list of available commands there. You can also type “?” at the end of any command to get a detailed description of the command syntax. 
&lt;P&gt;&lt;STRONG&gt;Displaying current settings and restoring the defaults&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;You can use the “show” netsh commands to display the current settings. “show proxy” will display the current proxy settings, while “show tracing” will display the current tracing settings. You can also use the “reset” netsh command to restore the default settings. “reset proxy” will set the WinHttp proxy settings to DIRECT, while “reset tracing” will disable the tracing. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Setting WinHttp proxy settings&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Use the “set proxy” command to configure the proxy settings. You can type the command followed by a question mark to see the syntax: &lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;CODE&gt;
&lt;P&gt;netsh winhttp&amp;gt;set proxy /? 
&lt;P&gt;Usage: set proxy [proxy-server=]&amp;lt;server name&amp;gt; [bypass-list=]&amp;lt;hosts list&amp;gt; 
&lt;P&gt;Parameters: 
&lt;P&gt;&amp;nbsp; Tag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Value 
&lt;P&gt;&amp;nbsp; proxy-server&amp;nbsp;&amp;nbsp; - proxy server for use for http and/or&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;https protocol 
&lt;P&gt;&amp;nbsp; bypass-list&amp;nbsp;&amp;nbsp;&amp;nbsp; - a list of sites that should be visited&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bypassing the proxy (use "&amp;lt;local&amp;gt;" to&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bypass all short name hosts) 
&lt;P&gt;Examples: 
&lt;P&gt;&amp;nbsp; set proxy myproxy 
&lt;P&gt;&amp;nbsp; set proxy myproxy:80 "&amp;lt;local&amp;gt;bar" 
&lt;P&gt;&amp;nbsp; set proxy proxy-server="http=myproxy;https=sproxy:88" bypass-list="*.foo.com" &lt;/P&gt;&lt;/CODE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Just follow the examples listed in the samples above to set your proxy settings. &lt;/P&gt;
&lt;P&gt;Note that importing proxy settings from IE is now accomplished by the “import” command (importing from IE is the only available option there): 
&lt;BLOCKQUOTE&gt;&lt;CODE&gt;
&lt;P&gt;netsh winhttp&amp;gt;import proxy /? 
&lt;P&gt;Usage: import proxy [source=]ie 
&lt;P&gt;Parameters: 
&lt;P&gt;&amp;nbsp; Tag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Value 
&lt;P&gt;&amp;nbsp; source&amp;nbsp; - from where the setting is imported 
&lt;P&gt;Examples: 
&lt;P&gt;&amp;nbsp; import proxy source=ie &lt;/P&gt;&lt;/CODE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Setting WinHttp tracing settings&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;To set the WinHttp tracing settings, use the “set tracing” command from the netsh winhttp context: 
&lt;BLOCKQUOTE&gt;&lt;CODE&gt;
&lt;P&gt;netsh winhttp&amp;gt;set tracing /? 
&lt;P&gt;Usage: set tracing 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [output=]file|debugger|both 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [trace-file-prefix=]&amp;lt;string&amp;gt; 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [level=]default|verbose 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [format=]ansi|hex 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [max-trace-file-size=]&amp;lt;number&amp;gt; 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [state=]enabled|disabled 
&lt;P&gt;Parameters: 
&lt;P&gt;&amp;nbsp; Tag Value 
&lt;P&gt;&amp;nbsp; trace-file-prefix&amp;nbsp;&amp;nbsp;&amp;nbsp;- Prefix for the log file (can&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include a path) specify "*" to&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;delete an existing prefix 
&lt;P&gt;&amp;nbsp; output&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Where the trace entries are&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; written/displayed to 
&lt;P&gt;&amp;nbsp; level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- How much information to log 
&lt;P&gt;&amp;nbsp; format&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Display format of network traffic &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (hex or ansi) 
&lt;P&gt;&amp;nbsp; max-trace-file-size&amp;nbsp;- Maximum size of the trace file (in&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes) 
&lt;P&gt;&amp;nbsp; state&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Enables or disables winhttp tracing 
&lt;P&gt;Examples: 
&lt;P&gt;&amp;nbsp; set tracing trace-file-prefix="C:\Temp\Test3" level=verbose format=hex 
&lt;P&gt;&amp;nbsp; set tracing output=debugger max-trace-file-size=512000 state=enabled &lt;/P&gt;&lt;/CODE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Please note that you can use the “state” parameter to disable / enable the tracing. For example, “set tracing state=disabled” will disable the tracing. 
&lt;P&gt;Also, your process needs to have enough permissions to create the trace file, so it is recommended to specify a folder via the “trace-file-prefix” parameter that you know your process has write access to.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;-Nesho Neshev&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1927468" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wndp/archive/tags/WinHttp/default.aspx">WinHttp</category></item><item><title>Content-Encoding != Content-Type</title><link>http://blogs.msdn.com/wndp/archive/2006/08/21/Content-Encoding-not-equal-Content-Type.aspx</link><pubDate>Mon, 21 Aug 2006 18:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:699741</guid><dc:creator>wndpteam</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/wndp/comments/699741.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wndp/commentrss.aspx?PostID=699741</wfw:commentRss><description>&lt;P&gt;&lt;A href="http://www.ietf.org/rfc/rfc2616.txt"&gt;RFC 2616&lt;/A&gt; for HTTP 1.1 specifies how web servers must indicate encoding transformations using the &lt;EM&gt;Content-Encoding&lt;/EM&gt; header. Although on the surface, &lt;EM&gt;Content-Encoding&lt;/EM&gt; (e.g., gzip, deflate, compress) and &lt;EM&gt;Content-Type&lt;/EM&gt; (e.g., x-application/x-gzip) sound similar, they are, in fact, two distinct pieces of information. Whereas servers use &lt;EM&gt;Content-Type&lt;/EM&gt; to specify the data type of the entity body, which can be useful for client applications that want to open the content with the appropriate application, &lt;EM&gt;Content-Encoding&lt;/EM&gt; is used solely to specify any additional encoding done by the server before the content was transmitted to the client. Although the HTTP RFC outlines these rules pretty clearly, some web sites respond with "gzip" as the Content-Encoding even though the server has not gzipped the content. &lt;/P&gt;
&lt;P&gt;Our testing has shown this problem to be limited to some sites that serve Unix/Linux style "tarball" files. Tarballs are gzip compressed archives files. By setting the Content-Encoding header to "gzip" on a tarball, the server is specifying that it has additionally gzipped the gzipped file. This, of course, is unlikely but not impossible or non-compliant. &lt;/P&gt;
&lt;P&gt;Therein lies the problem. A server responding with content-encoding, such as "gzip," is specifying the necessary mechanism that the client needs in order to decompress the content. If the server did not actually encode the content as specified, then the client's decompression would fail. &lt;/P&gt;
&lt;P&gt;Here is a potentially over-simplified example: &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Windows Vista Networking Rocks! 
&lt;LI&gt;Jvaqbjf Ivfgn Argjbexvat Ebpxf! &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;If I mistakenly claim that string a) has been encoded using the simple &lt;A href="http://en.wikipedia.org/wiki/ROT13"&gt;ROT-13&lt;/A&gt; obfuscation scheme when in actuality it has not, then the decoded message b) will be very different than the intended message. &lt;/P&gt;
&lt;P&gt;Since the &lt;A href="http://en.wikipedia.org/wiki/Artificial_intelligence"&gt;AI&lt;/A&gt; engine for WinINet isn't yet ready for production (joke), we try and work-around these non-compliant server responses but that isn't the right long-term approach. The fix and the ask, is for web server, extension and application authors to test their servers to see if they exhibit this behavior and if so fix their implementations before we remove our client-side &lt;EM&gt;hacks&lt;/EM&gt;. &lt;/P&gt;
&lt;P&gt;To test your server for compliance, issue a simple HTTP 1.1 request, including the "Accept-Encoding: gzip" for a .gz file and inspect the headers. If you see Content-Encoding: x-gzip or gzip, then the server is either gzip-encoding the already gzipped file or it is misstating that the content has been encoded by the server before transmission and therefore perpetuating client HTTP stacks, such as WinINet, having to absorb and hide this bad server behavior. &lt;/P&gt;
&lt;P&gt;-Billy Anders&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=699741" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wndp/archive/tags/WinINet/default.aspx">WinINet</category><category domain="http://blogs.msdn.com/wndp/archive/tags/WinHttp/default.aspx">WinHttp</category><category domain="http://blogs.msdn.com/wndp/archive/tags/Http.sys/default.aspx">Http.sys</category><category domain="http://blogs.msdn.com/wndp/archive/tags/Post+Vista+HTTP+Client/default.aspx">Post Vista HTTP Client</category></item><item><title>Large Request Payload Support in WinHttp for Windows Vista</title><link>http://blogs.msdn.com/wndp/archive/2006/08/08/WinHttp-Large-Request-Payloads.aspx</link><pubDate>Tue, 08 Aug 2006 18:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:691535</guid><dc:creator>wndpteam</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/wndp/comments/691535.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wndp/commentrss.aspx?PostID=691535</wfw:commentRss><description>&lt;P&gt;If you have used WinHttp to upload data to a server, you probably noticed that the total payload length parameter (dwTotalLength in WinHttpSendRequest) is of type DWORD, which is a 32 bit unsigned number. This limits the WinHttp apps to uploading 4GB of data, which could become a limitation in certain scenarios.&lt;BR&gt;A natural way to work around this limitation is to try to "chunked" encode the request payload, but there was a problem with WinHttp always appending a Content-Length header even if the app specifies a Transfer-Encoding: Chunked header, which causes many servers to reject the request. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Support &amp;gt; 4GB uploads using "Content-Length" in Windows Vista &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In Windows Vista, WinHttp is getting an update in this category. First, applications can specify a Content-Length &amp;gt; 4GB. To do that, they have to manually append a Content-Length header with the desired value. WinHttp will monitor for this header and if it is present and its value is bigger than 2^32 it will use it as an indicator of the total request payload size and will ignore the dwTotalLength parameter. WinHttp will internally store the header value in a ULONGLONG, which is a 64 bit unsigned variable. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Support for "chunked" encoding the request payload in Windows Vista &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Another WinHttp update for Windows Vista is that applications now can chunk encode the request data. To do that applications have to specify a non- "identity" "Transfer-Encoding" header (say "Transfer-Encoding: Chunked"), in which case WinHttp ignores the dwTotalLength parameter of WinHttpSendRequest API. In this mode of operation applications must not specify any optional data via WinHttpSendRequest call; attempting to do so will result in ERROR_WINHTTP_INVALID_PARAMETER. All entity body posting must be done via WinHttpWriteData API. Applications should also generate the last zero length chunk and send it via WinHttpWriteData API to terminate the upload operation since WinHttp is oblivious to how you are sending the entity body data. Calling WinHttpReceiveResponse tells WinHttp that you are done sending data. For more about chunk encoding please read the corresponding section in the &lt;A href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html"&gt;HTTP/1.1 RFC&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;There are a couple important notes for both styles of usage. First, applications need to be prepared to handle the ERROR_WINHTTP_RESEND_REQUEST return code in case WinHttp needs to resend the request (due to redirects and / or auth challenges). Since you will be using multiple WinHttpSendRequest and WinHttpWriteData calls, WinHttp won't be able to resend the entire request on your behalf like you might be used to when only calling WinHttpSendRequest. You should also be careful that WinHttpReceiveResponse can also pass back the resend return code. Second, in the case a POST request is redirected to a GET request (e.g. 302 response), WinHttp will automatically remove or reset the application specified "Transfer-Encoding" and/or Content-Length headers. &lt;/P&gt;
&lt;P&gt;As always, we want your feedback. Please let us know what you think about this new functionality and whether you want to see some code samples on how to upload large payloads using WinHttp. &lt;/P&gt;
&lt;P&gt;-Nesho Neshev&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=691535" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wndp/archive/tags/WinHttp/default.aspx">WinHttp</category></item><item><title>WinINet and WinHTTP IPv6 Support in Web Proxy Auto-Discovery (WPAD) scripts enabled in Windows Vista</title><link>http://blogs.msdn.com/wndp/archive/2006/07/18/IPV6-WPAD-for-WinHttp-and-WinInet.aspx</link><pubDate>Wed, 19 Jul 2006 01:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:670242</guid><dc:creator>wndpteam</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/wndp/comments/670242.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wndp/commentrss.aspx?PostID=670242</wfw:commentRss><description>Hi, my name is Jonathan Silvera and I am the WinINet and WinHTTP Program Manager. Today I would like to talk to you about changes we have made to add IPv6 support in the WinINet and WinHTTP WPAD helper functions. 
&lt;P&gt;The explosion of the Internet in the late 1990’s has caused an unexpected scarcity of IPv4 addresses, with the pool depleting on a daily basis. IPv6 provides a solution to this problem and although it is currently not widely deployed, its use will definitely become more prevalent in the future. &lt;A href="http://www3.ietf.org/proceedings/99jul/I-D/draft-ietf-wrec-wpad-00.txt" mce_href="http://www3.ietf.org/proceedings/99jul/I-D/draft-ietf-wrec-wpad-00.txt"&gt;WPAD&lt;/A&gt; is a protocol that allows web clients to automatically detect what the correct proxy configuration should be for their outgoing traffic. This is very useful for corporate deployments because it allows IT administrators to setup complex scripts that can route traffic for all clients to specific proxies based on the target server the clients are attempting to connect to. WinINet and WinHTTP support WPAD helper functions as defined by the &lt;A href="http://wp.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html" mce_href="http://wp.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html"&gt;Navigator Proxy Auto-Config (PAC) File Format specification&lt;/A&gt;, which has become a defacto standard. Unfortunately this specification was written in 1996 and does not define what the function behaviors should be when a WPAD script is deployed in an IPv6 capable network. 
&lt;P&gt;Here at Microsoft we are aware that IPv6 is the wave of the future and as part of a Windows wide push, we have required that all of our components support dual stack (IPv4 and IPv6) and IPv6 only networks. The first customer to approach us asking for IPv6 support in WPAD was our internal IT department after encountering issues with the IPv4 script dependency of their current deployment. When designing a solution to enable this scenario for Windows Vista, our team recognized the importance of providing a backwards compatible solution for IT administrators in order to avoid breaking the large number of existing corporate deployments with IPv4 script dependencies. 
&lt;P&gt;In order to meet our customer’s needs and support IPv6 without affecting existing deployment, we have added 6 new helper class functions as an &lt;A href="http://blogs.msdn.com/wndp/articles/IPV6_PAC_Extensions_v0_9.aspx" mce_href="http://blogs.msdn.com/wndp/articles/IPV6_PAC_Extensions_v0_9.aspx"&gt;extension to the Navigator Proxy Auto-Config (PAC) File Format specification&lt;/A&gt; and also added a new IPv6 capable function called FindProxyForURLEx that administrators can implement in the WPAD script. 
&lt;H3&gt;New Proxy Helper API Definitons:&lt;/H3&gt;In order to take advantage of the IPv6 enabled functions, IT administrators must define within their WPAD script a function called FindProxyForURLEx (url, host) which will replace the legacy FindProxyForUrl (url, host) function. Only from the new FindProxyForURLEx function will administrators be able to execute the new functions. 
&lt;P&gt;We also attempted to simplify work for developers, by aligning our functions to return different types of IP addresses in the same order of preference as other networking components, specifically IPv6 addresses followed by IPv4 addresses (i.e. current behavior for Winsock’s getaddrinfo(..) function). 
&lt;P&gt;The following tables explain the differences between the new WPAD helper functions and the legacy WPAD helper functions. The new functions are marked with a * &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class="" width=461 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" width=149&gt;&lt;B&gt;&lt;FONT size=2&gt;Functions&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;&lt;B&gt;&lt;FONT size=2&gt;Input&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;&lt;B&gt;&lt;FONT size=2&gt;Output&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width=132&gt;&lt;B&gt;&lt;FONT size=2&gt;Reason for Change&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" width=149&gt;
&lt;P&gt;&lt;FONT size=2&gt;dnsResolve&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;
&lt;P&gt;&lt;FONT size=2&gt;Host&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;
&lt;P&gt;&lt;FONT size=2&gt;IPv4 address&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=132 rowSpan=2&gt;
&lt;P&gt;&lt;FONT size=2&gt;Ex function will return a list of IPv6/IPv4. Necessary since IPv6 or IPv4 addresses can have multiple unicast addresses for a single interface&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" width=149&gt;
&lt;P&gt;&lt;FONT size=2&gt;dnsResolveEx*&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;
&lt;P&gt;&lt;FONT size=2&gt;Host&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;
&lt;P&gt;&lt;FONT size=2&gt;List of IPv6/IPv4 addresses&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class="" width=461 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" width=149 112.1pt;&gt;&lt;B&gt;&lt;FONT size=2&gt;Functions&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;&lt;B&gt;&lt;FONT size=2&gt;Input&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;&lt;B&gt;&lt;FONT size=2&gt;Output&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width=132&gt;&lt;B&gt;&lt;B&gt;&lt;FONT size=2&gt;Reason for change&lt;/FONT&gt;&lt;/B&gt;&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" width=149&gt;
&lt;P&gt;&lt;FONT size=2&gt;isResolvable&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;
&lt;P&gt;&lt;FONT size=2&gt;IPv4 host&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;
&lt;P&gt;&lt;FONT size=2&gt;TRUE / FALSE&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=132 rowSpan=2&gt;
&lt;P&gt;&lt;FONT size=2&gt;The Ex function will return TRUE if a host can resolve to an IPv6 or IPv4 address. The legacy function only returns TRUE if the host resolves to an IPv4 address&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" width=149&gt;
&lt;P&gt;&lt;FONT size=2&gt;isResolvableEx*&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;
&lt;P&gt;&lt;FONT size=2&gt;IPv6/IPv4 host&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;
&lt;P&gt;&lt;FONT size=2&gt;TRUE / FALSE&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class="" width=461 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" width=149&gt;&lt;B&gt;&lt;FONT size=2&gt;Functions&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;&lt;B&gt;&lt;FONT size=2&gt;Input&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;&lt;B&gt;&lt;FONT size=2&gt;Output&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width=132&gt;&lt;B&gt;&lt;B&gt;&lt;FONT size=2&gt;Reason for change&lt;/FONT&gt;&lt;/B&gt;&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" width=149&gt;
&lt;P&gt;&lt;FONT size=2&gt;myIPAddress&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;
&lt;P&gt;&lt;FONT size=2&gt;none&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;
&lt;P&gt;&lt;FONT size=2&gt;IPv4 address&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=132 rowSpan=2&gt;
&lt;P&gt;&lt;FONT size=2&gt;Ex function will return a list of IPv6/IPv4. Necessary since IPv6 or IPv4 addresses can have multiple unicast addresses for a single interface&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" width=149&gt;
&lt;P&gt;&lt;FONT size=2&gt;myIPAddressEx*&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;
&lt;P&gt;&lt;FONT size=2&gt;none&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;
&lt;P&gt;&lt;FONT size=2&gt;List of IPv6/IPv4 addresses&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class="" width=461 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" width=149&gt;&lt;B&gt;&lt;FONT size=2&gt;Functions&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;&lt;B&gt;&lt;FONT size=2&gt;Input&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;&lt;B&gt;&lt;FONT size=2&gt;Output&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width=132&gt;&lt;B&gt;&lt;FONT size=2&gt;Reason for change&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" width=149&gt;
&lt;P&gt;&lt;FONT size=2&gt;isInNet&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;
&lt;P&gt;&lt;FONT size=2&gt;Host, &lt;BR&gt;Dot separated IP address pattern, &lt;BR&gt;IP address Mask&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;
&lt;P&gt;&lt;FONT size=2&gt;TRUE / FALSE&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=132 rowSpan=2&gt;
&lt;P&gt;&lt;FONT size=2&gt;Provide an IP version agnostic way to find if an IP address is in a given subnet. Also, the mask notation in IPv4 is deprecated.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" width=149&gt;
&lt;P&gt;&lt;FONT size=2&gt;isInNetEx*&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;
&lt;P&gt;&lt;FONT size=2&gt;IP Address&lt;BR&gt;IP Prefix&lt;B&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;
&lt;P&gt;&lt;FONT size=2&gt;TRUE / FALSE&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class="" width=461 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" width=149 112.1pt;&gt;&lt;B&gt;&lt;FONT size=2&gt;Functions&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;&lt;B&gt;&lt;FONT size=2&gt;Input&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;&lt;B&gt;&lt;FONT size=2&gt;Output&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width=132&gt;&lt;B&gt;&lt;B&gt;&lt;FONT size=2&gt;Reason for change&lt;/FONT&gt;&lt;/B&gt;&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" width=149&gt;
&lt;P&gt;&lt;FONT size=2&gt;sortIPAddressList*&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;
&lt;P&gt;&lt;FONT size=2&gt;List of IPv6/IPv4 addresses&lt;B&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=90&gt;
&lt;P&gt;&lt;FONT size=2&gt;Sorted List of IPv6/IPv4 addresseslist of IPv6/IPv4 addresses&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=132&gt;
&lt;P&gt;&lt;FONT size=2&gt;There is no counterpart legacy function because legacy functions only returned a single IPv4 address, therefore there was no need to sort&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class="" width=462 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" width=149&gt;&lt;B&gt;&lt;FONT size=2&gt;Functions&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width=91&gt;&lt;B&gt;&lt;FONT size=2&gt;Input&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width=89&gt;&lt;B&gt;&lt;FONT size=2&gt;Output&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width=133&gt;&lt;B&gt;&lt;FONT size=2&gt;Reason for change&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" width=149&gt;
&lt;P&gt;&lt;FONT size=2&gt;getClientVersion*&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=91&gt;
&lt;P&gt;&lt;FONT size=2&gt;None&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=89&gt;
&lt;P&gt;&lt;FONT size=2&gt;WPAD engine version number&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=133&gt;
&lt;P&gt;&lt;FONT size=2&gt;Currently this function returns version 1.0. We added this function to allow IT administrators to update their WPAD to work with different versions of the WPAD engine without causing breaks to their existent deployment.&lt;B&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Again, see the &lt;A href="http://blogs.msdn.com/wndp/articles/IPV6_PAC_Extensions_v0_9.aspx" mce_href="http://blogs.msdn.com/wndp/articles/IPV6_PAC_Extensions_v0_9.aspx"&gt;extension spec&lt;/A&gt; for more details.&lt;/P&gt;
&lt;P&gt;We are truly proud of our work extending the Navigator Proxy Auto-Config (PAC) File Format specification to work with IPv6 addresses while ensuring backwards compatibility, as we believe these changes will prove useful current and future IPv6 users. These changes are available for WinINet/WinHTTP in Windows Vista starting in Beta 2, for WinINet on XP and Windows 2003 through IE7 starting in Beta 2 and will be available in a future release of the .Net Framework’s system.net. We would love to hear feedback from the community regarding these changes and if you are planning to deploy a WPAD script in an IPv6 network please let us know about your experience. &lt;/P&gt;
&lt;P&gt;Thanks&lt;BR&gt;-Jonathan Silvera &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=670242" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wndp/archive/tags/WinINet/default.aspx">WinINet</category><category domain="http://blogs.msdn.com/wndp/archive/tags/WinHttp/default.aspx">WinHttp</category><category domain="http://blogs.msdn.com/wndp/archive/tags/IPV6/default.aspx">IPV6</category></item><item><title>Wanted: Developer feedback for our "Next Generation" client HTTP stack</title><link>http://blogs.msdn.com/wndp/archive/2006/06/06/619376.aspx</link><pubDate>Tue, 06 Jun 2006 22:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:619376</guid><dc:creator>wndpteam</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/wndp/comments/619376.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wndp/commentrss.aspx?PostID=619376</wfw:commentRss><description>As we&amp;nbsp;begin the&amp;nbsp;planning phase for our &lt;A HREF="/wndp/archive/2006/03/23/559468.aspx"&gt;"Next Generation" client&amp;nbsp;HTTP stack&lt;/A&gt;, we would love to hear from developers using our existing APIs (WinINet and WinHTTP). Please help us understand what your experience has been so far and what you would like to see in any future releases by filling out &lt;A href="https://connect.microsoft.com/WNDP/Survey/Survey.aspx?SurveyID=1188"&gt;this survey&lt;/FONT&gt;&lt;/A&gt;. 
&lt;P&gt;Thanks&lt;/P&gt;
&lt;P&gt;&amp;nbsp;-Jonathan Silvera&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=619376" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wndp/archive/tags/WinINet/default.aspx">WinINet</category><category domain="http://blogs.msdn.com/wndp/archive/tags/WinHttp/default.aspx">WinHttp</category><category domain="http://blogs.msdn.com/wndp/archive/tags/Post+Vista+HTTP+Client/default.aspx">Post Vista HTTP Client</category></item><item><title>WNDP Connect Site gets an upgrade!</title><link>http://blogs.msdn.com/wndp/archive/2006/06/06/619215.aspx</link><pubDate>Tue, 06 Jun 2006 19:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:619215</guid><dc:creator>wndpteam</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wndp/comments/619215.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wndp/commentrss.aspx?PostID=619215</wfw:commentRss><description>&lt;P&gt;Last year we &lt;A href="/wndp/archive/2005/10/30/487124.aspx"&gt;setup&lt;/A&gt; a &lt;A href="/wndp/archive/2005/09/27/474679.aspx"&gt;small site&lt;/A&gt; on connect.microsoft.com in order to let our blog&amp;nbsp;readers, developers and users file bugs, make suggestions and get some conntent like whitepapers and samples early. The downside to the site was that you couldn't easily deep link and it required a Windows Live (aka Passport) login. Well the folks at connect.microsoft.com have launched a new version of connect that enables access to much of the site without a login including &lt;A href="https://connect.microsoft.com/WNDP/Feedback"&gt;readonly access to the bugs&lt;/A&gt; filled there much like the popular &lt;A href="http://lab.msdn.microsoft.com/productfeedback/"&gt;MSDN Product Feedback Center&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;Check it out: &lt;A href="http://connect.microsoft.com/WNDP"&gt;http://connect.microsoft.com/WNDP&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Ari Pernick&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=619215" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wndp/archive/tags/Winsock/default.aspx">Winsock</category><category domain="http://blogs.msdn.com/wndp/archive/tags/WinINet/default.aspx">WinINet</category><category domain="http://blogs.msdn.com/wndp/archive/tags/WinHttp/default.aspx">WinHttp</category><category domain="http://blogs.msdn.com/wndp/archive/tags/QoS/default.aspx">QoS</category><category domain="http://blogs.msdn.com/wndp/archive/tags/Http.sys/default.aspx">Http.sys</category></item><item><title>WinHttp Configuration for Windows Vista Beta 2 - Part 4 Client Certificates</title><link>http://blogs.msdn.com/wndp/archive/2006/05/12/596540.aspx</link><pubDate>Sat, 13 May 2006 03:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:596540</guid><dc:creator>wndpteam</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/wndp/comments/596540.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wndp/commentrss.aspx?PostID=596540</wfw:commentRss><description>&lt;P&gt;In &lt;A HREF="/wndp/archive/2006/05/05/591152.aspx"&gt;Part 1&lt;/A&gt;, &lt;A HREF="/wndp/archive/2006/05/08/592895.aspx"&gt;Part 2&lt;/A&gt; and &lt;A HREF="/wndp/archive/2006/05/09/594253.aspx"&gt;Part 3&lt;/A&gt; of this series I discussed the tools used to configure WinHttp today, introduced the changes happening for Windows Vista and how to set up proxies and tracing. In this post I’m looking at the client certificate settings. Again as a reminder, this is how it is for Windows Vista Beta 2 and can change some before Vista RTM. &lt;/P&gt;
&lt;P&gt;First, some background. WinHttp developers are hitting a common problem when trying to use client certificates in middle-tier scenarios. Typically in those cases client certificates are installed in the Local Machine certificate store so that different user accounts can access them. The problem is that by default, only administrators and the account that imported the certificate has access to the certificate’s private key. This prevents the middle-tier code from using the certificate to perform client authentication. &lt;/P&gt;
&lt;P&gt;To solve this problem, WinHttp shipped &lt;A href="http://msdn.microsoft.com/library/en-us/winhttp/http/winhttpcertcfg_exe__a_certificate_configuration_tool.asp"&gt;winhttpcertcfg.exe&lt;/A&gt; tool, which for Windows Server 2003 was part of &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd&amp;amp;displaylang=en"&gt;Windows Server 2003 Resource Kit Tools&lt;/A&gt;. The tool allows administrators to import client certificates and to manage the accounts that have access to the certificate’s private key. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/winhttp/http/winhttpcertcfg_exe__a_certificate_configuration_tool.asp"&gt;Winhttpcertcfg.exe&lt;/A&gt; is being deprecated for Vista. The ability to manage the access to the certificate’s private key (for the certificates in the Local Machine store) is now built into the Certificates Microsoft Management Console (MMC) snap-in. &lt;/P&gt;
&lt;P&gt;Here is how to get to the UI: &lt;/P&gt;
&lt;P&gt;From the start menu or command line prompt, type mmc.exe, select File | Add/Remove Snap-in…, and add the “Certificates” snap-in for the Local Computer account. You could open certificates snap-in by typing “certmgr.msc” but it will open the Current User store. Note also that you can save the MMC configuration for later use. &lt;/P&gt;
&lt;P&gt;To configure the accounts with access to the certificate’s private key, expand the tree view until you see the certificate (say “Certificates (Local Computer)\Personal\Certificates”), right-click on the certificate and select “All Tasks”, “Manage Private Keys…”: &lt;/P&gt;
&lt;P&gt;&lt;IMG src="/photos/wndp/images/596590/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This will open a standard permissions dialog from where you can manage the access to the certificate’s private key. &lt;/P&gt;
&lt;P&gt;In case you need to import certificates you can use the same Certificates snap-in (right-click on the certificate store and select “All Tasks”, “Import…” or you can use the CertUtil command line tool to do it programmatically (type “certutil -importPFX -?” to see the usage). &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;We want your feedback! &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;This post is the last one of the WinHttp Configuration for Vista series. &lt;/P&gt;
&lt;P&gt;Please let us know what you think about the new WinHttp configuration story. Please send us your comments or questions, especially if you see yourself being blocked because of a missing functionality. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;--Nesho Neshev&lt;BR&gt;&amp;nbsp;Software Design Engineer / Test&lt;BR&gt;&amp;nbsp;Web Transports Team, Windows Networking&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=596540" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wndp/archive/tags/WinHttp/default.aspx">WinHttp</category></item><item><title>WinHttp Configuration for Windows Vista Beta 2 - Part 3 Tracing</title><link>http://blogs.msdn.com/wndp/archive/2006/05/09/594253.aspx</link><pubDate>Wed, 10 May 2006 08:40:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:594253</guid><dc:creator>wndpteam</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wndp/comments/594253.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wndp/commentrss.aspx?PostID=594253</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Calibri&gt;In &lt;/FONT&gt;&lt;A HREF="/wndp/archive/2006/05/05/591152.aspx"&gt;&lt;FONT face=Calibri&gt;Part 1&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; and &lt;/FONT&gt;&lt;A HREF="/wndp/archive/2006/05/08/592895.aspx"&gt;&lt;FONT face=Calibri color=#0000ff&gt;Part 2&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; of this series I discussed the tools used to configure WinHttp today, introduced the changes happening for Windows Vista and how to set up proxies. In this post I’m looking at the Tracing settings. Again as a reminder, this is how it is for Windows Vista Beta 2 and it is likely to change some before Vista RTM. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;After running netsh and going to the winhttp context, we switch to the tracing context by typing “tracing”: &lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;netsh winhttp&amp;gt;tracing&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;netsh winhttp tracing&amp;gt;?&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;The following commands are available:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;..&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;.. (Skipping the inherited commands)&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;..&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;Commands in this context:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Displays a list of commands.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;config&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Configures WinHTTP tracing parameters.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;disable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Turns off WinHTTP tracing.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;dump&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Displays a configuration script.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;enable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Turns on WinHTTP tracing.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;help&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Displays a list of commands.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;reset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Resets WinHTTP trace parameters to default.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;show&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Displays current tracing parameters.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;&amp;nbsp; &amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;Again the functionality here is similar to the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/winhttp/http/winhttptracecfg_exe__a_trace_configuration_tool.asp"&gt;&lt;FONT face=Calibri color=#0000ff&gt;WinHttpTraceCfg.exe&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; tool with the addition of the “dump” command that creates a script with the current tracing settings which can be executed later to restore those settings on the current or another machine. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;Let’s look at the current tracing settings: &lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;netsh winhttp tracing&amp;gt;show&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;WinHTTP trace configuration not set.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;&amp;nbsp; &amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;You can easily disable or enable tracing by just typing “disable” or “enable”: &lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;netsh winhttp tracing&amp;gt;disable&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tracing is disabled.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;&amp;nbsp; &amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;netsh winhttp tracing&amp;gt;enable&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;Current WinHTTP Tracing settings:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tracing is enabled.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;&amp;nbsp; &amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Trace File Prefix: (none)&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Trace Output: file&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Trace Level:&amp;nbsp; default (headers and top-level APIs only)&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Network Traffic Format: ansi&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Maximum size of trace file (in bytes): 65535&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;&amp;nbsp; &amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;Note that “enable” sets some default tracing parameters. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;You can use the “config” command to set some different values: &lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;netsh winhttp tracing&amp;gt;config trace-file-prefix="C:\Temp\Test3" format="ansi" output=debugger level="verbose"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;&amp;nbsp; &amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tracing is updated.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;&amp;nbsp; &amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;Current WinHTTP Tracing settings:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tracing is enabled.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;&amp;nbsp; &amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Trace File Prefix: C:\Temp\Test3&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Trace Output: debugger&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Trace Level:&amp;nbsp; verbose (headers, APIs, and entity body)&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Network Traffic Format: ansi&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Maximum size of trace file (in bytes): 65535&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7.5pt"&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;&amp;nbsp; &amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;If you have used WinHttpTraceCfg.exe before you probably noted a slight difference in the parameters. WinHttpTraceCfg.exe uses two parameters, -s and -t, to specify whether or not to trace the payloads (and if included, as Hex or ANSI) and whether or not to include the top level API traces respectively. The config command has a more clear separation by allowing you to specify a level (default – no payloads, verbose - include payloads) and logging format for the network traffic data (Hex or ANSI). &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;Again, if you need to get a help on a command, just type it with question mark after it. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;Next time I will go into a bit more detail about client cert configuration. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;-- Nesho Neshev&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=594253" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wndp/archive/tags/WinHttp/default.aspx">WinHttp</category></item><item><title>WinHttp Configuration for Windows Vista Beta 2 - Part 2</title><link>http://blogs.msdn.com/wndp/archive/2006/05/08/592895.aspx</link><pubDate>Tue, 09 May 2006 03:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:592895</guid><dc:creator>wndpteam</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/wndp/comments/592895.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wndp/commentrss.aspx?PostID=592895</wfw:commentRss><description>&lt;p&gt;In &lt;a href="http://blogs.msdn.com/wndp/archive/2006/05/05/591152.aspx"&gt;Part 1&lt;/a&gt; of this series I discussed the tools used to configure WinHttp today and introduced the changes happening for Windows Vista. In this post I’m looking at the Proxy settings. Again as a reminder, this is how it is for Windows Vista Beta 2 and it is likely to change some before Vista RTM. 
&lt;/p&gt;&lt;p&gt;After running netsh and going to the winhttp context, we switch to the proxy context by typing “proxy”: 
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;netsh winhttp&amp;gt; proxy 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;netsh winhttp proxy&amp;gt; 
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;   
 &lt;/p&gt;&lt;p&gt;Here is the list of available commands in that context: 
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;netsh winhttp proxy&amp;gt;? 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;   
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;The following commands are available: 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;   
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;… 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;… (Skipping the inherited commands …) 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;… 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;   
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;Commands in this context: 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;?              - Displays a list of commands. 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;dump           - Displays a configuration script. 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;help           - Displays a list of commands. 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;import         - Imports proxy setting from IE. 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;reset          - Resets WinHTTP proxy setting to DIRECT. 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;set            - Configures WinHTTP proxy setting. 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;show           - Displays current WinHTTP proxy setting. 
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;   
 &lt;/p&gt;&lt;p&gt;You can use “show” to view the current settings, “set” to set the proxy settings and “import” to import current user’s Internet Explorer proxy settings. If you’ve used proxycfg.exe you will find that this context provides the same functionality. The only exception is “dump”, which creates a Netsh script with the current settings and can be executed later (on the same machine or different one) to set those settings. 
&lt;/p&gt;&lt;p&gt;Let’s start by displaying the current proxy settings: 
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;netsh winhttp proxy&amp;gt;show 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;   
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;Current WinHTTP proxy settings: 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;   
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;    Direct access (no proxy server). 
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;   
 &lt;/p&gt;&lt;p&gt;Now let’s set the proxy server for HTTP sites to “myproxy” (port 80 by default), proxy server for HTTPS sites to “sproxy” (port 88) and set the bypass list to “*.foo.com”: 
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;netsh winhttp proxy&amp;gt;set proxy-server="http=myproxy;https=sproxy:88" bypass-list= 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;"*.foo.com" 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;Current WinHTTP proxy settings: 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;Proxy Server(s) : http=myproxy;https=sproxy:88 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;Bypass List : *.foo.com 
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;To reset the proxy settings to “direct” (not to use proxy servers), just type “reset”: 
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;netsh winhttp proxy&amp;gt;reset 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;Current WinHTTP proxy settings: 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;Direct access (no proxy server). 
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;Another useful command is to import the proxy settings for the current user in Internet Explorer (note that different users may specify different proxy settings in IE): 
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;Current WinHTTP proxy settings: 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;Proxy Server(s) : ieproxy:80 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;Bypass List : &amp;lt;local&amp;gt; 
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;Again, if you need to get a help on a command, just type it with question mark after it. 
&lt;/p&gt;&lt;p&gt;Next time I will go into a bit more detail about tracing configuration. 
&lt;/p&gt;&lt;p&gt; --Nesho Neshev&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=592895" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wndp/archive/tags/WinHttp/default.aspx">WinHttp</category></item><item><title>WinHttp Configuration for Windows Vista Beta 2 - Part 1</title><link>http://blogs.msdn.com/wndp/archive/2006/05/05/591152.aspx</link><pubDate>Sat, 06 May 2006 01:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:591152</guid><dc:creator>wndpteam</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/wndp/comments/591152.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wndp/commentrss.aspx?PostID=591152</wfw:commentRss><description>&lt;p&gt;WinHttp for Windows XP and Windows Server 2003 comes with variety of tools that allow the users and system administrators to configure the default proxy settings (&lt;a href="http://msdn.microsoft.com/library/en-us/winhttp/http/proxycfg_exe__a_proxy_configuration_tool.asp"&gt;ProxyCfg.exe&lt;/a&gt;), tracing settings (&lt;a href="http://msdn.microsoft.com/library/en-us/winhttp/http/winhttptracecfg_exe__a_trace_configuration_tool.asp"&gt;WinHttpTraceCfg.exe&lt;/a&gt;) and configure client certificates (&lt;a href="http://msdn.microsoft.com/library/en-us/winhttp/http/winhttpcertcfg_exe__a_certificate_configuration_tool.asp"&gt;WinHttpCertCfg.exe&lt;/a&gt;). 
&lt;/p&gt;&lt;p&gt;ProxyCfg.exe has been part of the operating system, while WinHttpTraceCfg.exe and WinHttpCertCfg.Exe have to be downloaded separately as part of the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd&amp;amp;displaylang=en"&gt;Windows Server 2003 Resource Kit Tools&lt;/a&gt;. 
&lt;/p&gt;&lt;p&gt;To avoid the need of tools that don’t ship with Windows and to make the user experience more consistent with the other networking components, ProxyCfg.exe and WinHttpTraceCfg.exe are deprecated for Windows Vista and replaced with Net Shell (Netsh) extensions. WinHttpCertCfg.Exe is deprecated as well and its functionality is integrated in the new Certificates MMC snap-in. 
&lt;/p&gt;&lt;p&gt;If you are not familiar with Netsh, you can take a look at Windows XP online help (&lt;a href="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/netsh.mspx?mfr=true"&gt;here&lt;/a&gt; is a good link). In this post series we will go over some samples on how to configure the WinHttp proxy, tracing settings and client certification settings. Please note that the samples describe the current behavior in Windows Vista Beta 2 and that the command syntax is likely to change a bit for Vista RTM. 
&lt;/p&gt;&lt;p&gt;To start, you can load up netsh on a Vista CTP build and check it out. The new context that WinHttp introduces is “WinHttp”. You can get to it by just typing “winhttp” from the root netsh context: 
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;C:\&amp;gt; netsh
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;netsh&amp;gt; winhttp
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;netsh winhttp&amp;gt; 
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;From here there are two nested contexts available: 
&lt;/p&gt;&lt;p&gt;proxy    - Configures proxy settings in WinHTTPtracing  - Configures tracing in WinHTTP 
&lt;/p&gt;&lt;p&gt;Note that at any point you can type “?” to get the list of supported commands. Also, typing “command ?” will show all the parameters for that command. 
&lt;/p&gt;&lt;p&gt;Next time I will go into a bit more detail about the proxy configuration. 
&lt;/p&gt;&lt;p&gt;   -- Nesho Neshev&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=591152" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wndp/archive/tags/WinHttp/default.aspx">WinHttp</category></item><item><title>What's next on the client HTTP stack front</title><link>http://blogs.msdn.com/wndp/archive/2006/03/23/559468.aspx</link><pubDate>Fri, 24 Mar 2006 03:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:559468</guid><dc:creator>wndpteam</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/wndp/comments/559468.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wndp/commentrss.aspx?PostID=559468</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://www.microsoft-watch.com/article2/0,2180,1940567,00.asp"&gt;http://www.microsoft-watch.com/article2/0,2180,1940567,00.asp&lt;/A&gt;&lt;BR&gt;Hachamovitch acknowledged Microsoft already is building the next two versions of IE. He declined to offer guidelines on delivery schedules or feature sets, other than to say one of the two versions will include "&lt;STRONG&gt;a complete reworking of the networking stack&lt;/STRONG&gt;." &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;That would be us. We are going to be busy for awhile :)&lt;/P&gt;
&lt;P&gt;-- Ari Pernick&lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=559468" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wndp/archive/tags/WinINet/default.aspx">WinINet</category><category domain="http://blogs.msdn.com/wndp/archive/tags/WinHttp/default.aspx">WinHttp</category><category domain="http://blogs.msdn.com/wndp/archive/tags/Post+Vista+HTTP+Client/default.aspx">Post Vista HTTP Client</category></item></channel></rss>