Late reply on this -- I had to spend time on other projects. :) I have a dedicated test proxy set up now so it's easier to capture the correct packets now and experiment.
> Sounds you are just stuck in the middle trying to deal with a broken > client. I thought you might be trying to actually implement the > client software or something. Yes, sorry, I should have clarified that earlier. > Sure, you can fix this. > > Just get in with a monkey wrench if you have to and force mod_proxy > to honor 'Keep-Alive' for an OPTIONS request and the behavior should > then be identical to the ( known good ) direct-to-IIS example. I am going to definitely try to do this now. Point me in the right direction maybe? Is there actually an Apache config option I can leverage for this or do I need to look to patch the mod_proxy source? > PS: Still just curious. What is the HTTP/x.x value actually being > sent by the "The Treo" for the exchange in question?. Is it the older > HTTP/1.0 or is it actually requesting full HTTP/1.1 functionality? > Sometimes that comes into play with this 'Keep-Alive' stuff. If it's > sending HTTP/1.0 then perhaps mod_proxy is simply obeying strict > standards and that's why it changes 'Keep-Alive' back to 'Close'. > 'Keep-Alive' was not 'officially' part of the HTTP/1.0 specs. It just > sort of 'crept in there' and was available BEFORE full implementation > of HTTP/1.1. So there's still a lot of confusion out there and a lot > of 'looking the other way' going on with regards to 'Keep-Alive'. > Some code tries to be strict ( Apache, generally ) and others are > 'loose' ( Microsoft/IIS? ). > > Example: MS Internet Explorer has always had an 'Advanced Option' > which allows you to decide to use HTTP/1.1 for "Proxy Connections" > but it is OFF by default. Default behavior for MSIE Proxy requests is > to use the older HTTP/1.0. However... that doesn't mean it won't use > "Keep-Alive". It treats that part of the HTTP/1.1 spec as an > exception. > > Apologies in advance if this is all just old news to you. > > On my own Microsft Windows Mobile Treo, however, this legacy > "Advanced Option" is missing. The Pocket Internet Explorer Browser > under Windows Mobile will ALWAYS send an HTTP/1.1 request. It is requesting HTTP/1.1. I'll paste the full conversation here which I just captured. This is from the Treo to and from the Proxy and again is with Apache 2.2.9 svn 659141 straight HTTP (no SSL). 1 OPTIONS /Microsoft-Server-ActiveSync HTTP/1.1 MS-ASProtocolVersion: 2.5 Connection: Keep-Alive User-Agent: PalmOne-TreoAce/1.53 Host:redowadev.esri.com Cache-Control: no-cache Authorization: Basic <stuff> Content-Length: 0 4 HTTP/1.1 200 OK Date: Wed, 28 May 2008 22:52:00 GMT Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET X-AspNet-Version: 2.0.50727 Public: OPTIONS, POST Allow: OPTIONS, POST MS-Server-ActiveSync: 6.5.7638.1 MS-ASProtocolVersions: 1.0,2.0,2.1,2.5 MS-ASProtocolCommands: Sync,SendMail,SmartForward,SmartReply,GetAttachment,GetHierarchy,CreateCollection,DeleteCollection,MoveCollection,FolderSync,FolderCreate,FolderDelete,FolderUpdate,MoveItems,GetItemEstimate,MeetingResponse,ResolveRecipients,ValidateCert,Provision,Search,Notify,Ping Content-Length: 0 Cache-Control: private Content-Type: text/html; charset=UTF-8 Connection: close 5 POST /Microsoft-Server-ActiveSync?Cmd=FolderSync&[EMAIL PROTECTED]&DeviceId=xxXXXXxxxx63&DeviceType=PalmOneTreoAce HTTP/1.1 Content-Type: application/vnd.ms-sync.wbxml MS-ASProtocolVersion: 2.5 Connection: Keep-Alive User-Agent: PalmOne-TreoAce/1.53 Host:redowadev.esri.com Cache-Control: no-cache X-MS-PolicyKey: 0 Authorization: Basic <stuff> Content-Length: 13 ^^ This packet is never proxied on to the IIS server. Here is the proxy to OWA (IIS) server conversation: 2 OPTIONS /Microsoft-Server-ActiveSync HTTP/1.1 Host: redowadev.esri.com MS-ASProtocolVersion: 2.5 User-Agent: PalmOne-TreoAce/1.53 Cache-Control: no-cache Authorization: Basic <stuff> X-Forwarded-For: 99.204.225.107 X-Forwarded-Host: redowadev.esri.com X-Forwarded-Server: redowadev.esri.com Connection: Keep-Alive Content-Length: 0 3 HTTP/1.1 200 OK Date: Wed, 28 May 2008 22:52:00 GMT Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET X-AspNet-Version: 2.0.50727 Public: OPTIONS, POST Allow: OPTIONS, POST MS-Server-ActiveSync: 6.5.7638.1 MS-ASProtocolVersions: 1.0,2.0,2.1,2.5 MS-ASProtocolCommands: Sync,SendMail,SmartForward,SmartReply,GetAttachment,GetHierarchy,CreateCollection,DeleteCollection,MoveCollection,FolderSync,FolderCreate,FolderDelete,FolderUpdate,MoveItems,GetItemEstimate,MeetingResponse,ResolveRecipients,ValidateCert,Provision,Search,Notify,Ping Content-Length: 0 Cache-Control: private Content-Type: text/html ^^ IIS agrees to keep the connection alive. FWIW, this Treo doesn't appear to have too much in the way of advanced options to toggle how its HTTP client used in sync'ing behaves. Thanks again, Ray
