RE: http 307 temp redirect not working

"Henry Ping" <[email protected]>
Newsgroups gmane.comp.multimedia.helix.devel
Organization RealNetworks
Message-ID <[email protected]>
Thanks. Good to know. This requirement must be new in HTTP1.1
 
It seems we're still not handling 1xx and 5xx properly with your change in
order to fully comply with the spec. I suggest to file a bug so we can come
up with the complete solution. 
 
I will look at your changes and check in what you have for now. I will
likely get rid of those "goto" statements :)
 
Henry



  _____  

From: Guillaume Tucker [mailto:[email protected]] 
Sent: Monday, October 20, 2008 4:32 AM
To: [email protected]
Cc: [email protected]
Subject: Re: [Helix-client-dev] http 307 temp redirect not working


Hi Henry,

The HTTP specification explains how the client should handle unsupported
HTTP status codes, and I believe the default cases I have introduced comply
to it. So there should not be any mishandling anyway with these default
cases. Furthermore, this behavior is also a DLNA compliance requirement (see
comments in the code) so we need to implement it.

Best regards,
Guillaume.

Henry Ping wrote: 

Thanks, Guillaume.



I think it's better for us to just fail instead of masking&applying the

default action if we don't recognize the response code.



New response code can be created in the same category but it may need

special handling, such as 305 response code. Mis-handling it can cause more

problem than not handling it all.



I will check in part of your changes that catching 307 along with 301 & 302.



Henry



  

-----Original Message-----

From: [email protected] 

[mailto:[email protected]] On 

Behalf Of Guillaume Tucker

Sent: Friday, October 17, 2008 2:22 AM

To: [email protected]

Subject: Re: [Helix-client-dev] http 307 temp redirect not working



Dear Henry,



I have corrected the HTTP status codes issues, adding default 

cases for 2xx and 3xx values. I do not have write access to 

the source, but I thought you may want to apply the diff 

below. This has solved our redirection problem.



Best regards,

Guillaume.





===================================================================

RCS file: /cvsroot/filesystem/http/httpfsys.cpp,v

retrieving revision 1.128

diff -u -r1.128 httpfsys.cpp

--- httpfsys.cpp        6 Oct 2008 18:02:22 -0000       1.128

+++ httpfsys.cpp        17 Oct 2008 09:11:35 -0000

@@ -8491,6 +8491,7 @@



             HXLOGL1(HXLOG_HTTP, "HandleHeaderRead: HTTP 

header status ==> %lu", ulHTTPStatus);



+

             if(pMessage->majorVersion() > 0)

             {

                 switch(ulHTTPStatus)

@@ -8524,7 +8525,8 @@

                         }

                         // No break, intentional fall-through



-                    case 200: // Success

+                    case 200:    // Success

+                    default_2xx: // Default success

                         {

                             if (m_bCheckingWhetherByteRangeWorks)

                             {

@@ -8570,8 +8572,19 @@

                             retVal = 

_HandleSuccess(pMessage, pBuffer, ulHeaderLength);

                         }

                         break;

-                    case 400: // Fail

-                    case 404: // Not Found

+

+                    case 301:

+                    case 302:

+                    case 307:

+                    default_3xx: // Default redirect

+                        {

+                            retVal = _HandleRedirect(pMessage);

+                        }

+                        break;

+

+                    case 400:    // Fail

+                    case 404:    // Not Found

+                    default_4xx: // Default failure

                         {

                             retVal = _HandleFail(ulHTTPStatus);

                         }

@@ -8582,13 +8595,6 @@

                             retVal = 

_HandleUnAuthorized(pMessage, pBuffer, ulHeaderLength);

                         }

                         break;

-                    case 301: // Redirect

-                    case 302: // Redirect

-                        {

-                            retVal = _HandleRedirect(pMessage);

-                        }

-                        break;

-

                     case 416: // Invalid range request

                         m_LastError = HXR_INVALID_PARAMETER;

                         m_pFileResponse->SeekDone(HXR_FAILED);

@@ -8597,7 +8603,18 @@



                     default:

                         {

-                            retVal = _HandleFail(400);

+                            // DLNA compliance

+                            // Any 2xx status codes not 

explicitly handled

+                            // must be treated as 200

+                            if ((ulHTTPStatus >= 200) && 

(ulHTTPStatus

< 300))

+                              goto default_2xx;

+

+                            // Default 3xx code : redirect

+                            if ((ulHTTPStatus >= 300) && 

(ulHTTPStatus

< 400))

+                              goto default_3xx;

+

+                            // Other code : failure

+                            goto default_4xx;

                         }

                         break;

                 };





_______________________________________________

Helix-client-dev mailing list

[email protected]

http://lists.helixcommunity.org/mailman/listinfo/helix-client-dev

_______________________________________________
Helix-client-dev mailing list
[email protected]
http://lists.helixcommunity.org/mailman/listinfo/helix-client-dev
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.