Re: WebSocket2

Ilari Liusvaara <ilariliusvaara@welho.com>: (Sun Oct  2 13:15:48 2016)
> On Sun, Oct 02, 2016 at 11:00:29AM +0300, Kari hurtta wrote:
> > 
> > (A,B) Is there http  error code which tells that
> > that it was unsuppoted :scheme (and not other 
> > error, for example wrong :path) ?
> > 
> > That is needed that client (A) orPbroxy (B) can
> > switch Websocket (RFC 6455) negotated over
> > HTTP/1.1
> 
> I don't think there is (and that's a part of the problem) with current
> scheme handling.
> 
> There are probably quite a bit of servers that just plain ignore the
> scheme in request.

Hmm. Was reason why

https://tools.ietf.org/html/draft-hirano-httpbis-websocket-over-http2-01

used SETTINGS frame with SETTINGS_WEBSOCKET_CAPABLE parameter ?
Seems not mention that reason. 

That means that server needs send SETTINGS_WEBSOCKET_CAPABLE = 1
to client indicating that server handles :scheme = ws
( and on that draft SETTINGS_WEBSOCKET_CAPABLE = 1
  was sent from client to server. )



Hypertext Transfer Protocol (HTTP) Status Code Registry
http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml

gives 

----------------------------------------------
    Value            Description                             Reference
     100   Continue                        [RFC7231, Section 6.2.1]
     101   Switching Protocols             [RFC7231, Section 6.2.2]
     102   Processing                      [RFC2518]
   103-199 Unassigned
     200   OK                              [RFC7231, Section 6.3.1]
     201   Created                         [RFC7231, Section 6.3.2]
     202   Accepted                        [RFC7231, Section 6.3.3]
     203   Non-Authoritative Information   [RFC7231, Section 6.3.4]
     204   No Content                      [RFC7231, Section 6.3.5]
     205   Reset Content                   [RFC7231, Section 6.3.6]
     206   Partial Content                 [RFC7233, Section 4.1]
     207   Multi-Status                    [RFC4918]
     208   Already Reported                [RFC5842]
   209-225 Unassigned
     226   IM Used                         [RFC3229]
   227-299 Unassigned
     300   Multiple Choices                [RFC7231, Section 6.4.1]
     301   Moved Permanently               [RFC7231, Section 6.4.2]
     302   Found                           [RFC7231, Section 6.4.3]
     303   See Other                       [RFC7231, Section 6.4.4]
     304   Not Modified                    [RFC7232, Section 4.1]
     305   Use Proxy                       [RFC7231, Section 6.4.5]
     306   (Unused)                        [RFC7231, Section 6.4.6]
     307   Temporary Redirect              [RFC7231, Section 6.4.7]
     308   Permanent Redirect              [RFC7538]
   309-399 Unassigned
     400   Bad Request                     [RFC7231, Section 6.5.1]
     401   Unauthorized                    [RFC7235, Section 3.1]
     402   Payment Required                [RFC7231, Section 6.5.2]
     403   Forbidden                       [RFC7231, Section 6.5.3]
     404   Not Found                       [RFC7231, Section 6.5.4]
     405   Method Not Allowed              [RFC7231, Section 6.5.5]
     406   Not Acceptable                  [RFC7231, Section 6.5.6]
     407   Proxy Authentication Required   [RFC7235, Section 3.2]
     408   Request Timeout                 [RFC7231, Section 6.5.7]
     409   Conflict                        [RFC7231, Section 6.5.8]
     410   Gone                            [RFC7231, Section 6.5.9]
     411   Length Required                 [RFC7231, Section 6.5.10]
     412   Precondition Failed             [RFC7232, Section 4.2]
     413   Payload Too Large               [RFC7231, Section 6.5.11]
     414   URI Too Long                    [RFC7231, Section 6.5.12]
     415   Unsupported Media Type          [RFC7231, Section 6.5.13][RFC7694, Section 3]
     416   Range Not Satisfiable           [RFC7233, Section 4.4]
     417   Expectation Failed              [RFC7231, Section 6.5.14]
   418-420 Unassigned
     421   Misdirected Request             [RFC7540, Section 9.1.2]
     422   Unprocessable Entity            [RFC4918]
     423   Locked                          [RFC4918]
     424   Failed Dependency               [RFC4918]
     425   Unassigned
     426   Upgrade Required                [RFC7231, Section 6.5.15]
     427   Unassigned
     428   Precondition Required           [RFC6585]
     429   Too Many Requests               [RFC6585]
     430   Unassigned
     431   Request Header Fields Too Large [RFC6585]
   432-450 Unassigned
     451   Unavailable For Legal Reasons   [RFC7725]
   452-499 Unassigned
     500   Internal Server Error           [RFC7231, Section 6.6.1]
     501   Not Implemented                 [RFC7231, Section 6.6.2]
     502   Bad Gateway                     [RFC7231, Section 6.6.3]
     503   Service Unavailable             [RFC7231, Section 6.6.4]
     504   Gateway Timeout                 [RFC7231, Section 6.6.5]
     505   HTTP Version Not Supported      [RFC7231, Section 6.6.6]
     506   Variant Also Negotiates         [RFC2295]
     507   Insufficient Storage            [RFC4918]
     508   Loop Detected                   [RFC5842]
     509   Unassigned
     510   Not Extended                    [RFC2774]
     511   Network Authentication Required [RFC6585]
   512-599 Unassigned
----------------------

:status =  501

is probably that what should be expected with unsupported :scheme


( and HTTP/2 Error Code registry 
http://www.iana.org/assignments/http2-parameters/http2-parameters.xhtml#error-code

gives

Code 	Name 	Description 	Reference
0x0 	NO_ERROR 	Graceful shutdown 	[RFC7540, Section 7]
0x1 	PROTOCOL_ERROR 	Protocol error detected 	[RFC7540, Section 7]
0x2 	INTERNAL_ERROR 	Implementation fault 	[RFC7540, Section 7]
0x3 	FLOW_CONTROL_ERROR 	Flow-control limits exceeded 	[RFC7540, Section 7]
0x4 	SETTINGS_TIMEOUT 	Settings not acknowledged 	[RFC7540, Section 7]
0x5 	STREAM_CLOSED 	Frame received for closed stream 	[RFC7540, Section 7]
0x6 	FRAME_SIZE_ERROR 	Frame size incorrect 	[RFC7540, Section 7]
0x7 	REFUSED_STREAM 	Stream not processed 	[RFC7540, Section 7]
0x8 	CANCEL 	Stream cancelled 	[RFC7540, Section 7]
0x9 	COMPRESSION_ERROR 	Compression state not updated 	[RFC7540, Section 7]
0xa 	CONNECT_ERROR 	TCP connection error for CONNECT method 	[RFC7540, Section 7]
0xb 	ENHANCE_YOUR_CALM 	Processing capacity exceeded 	[RFC7540, Section 7]
0xc 	INADEQUATE_SECURITY 	Negotiated TLS parameters not acceptable 	[RFC7540, Section 
7]
0xd 	HTTP_1_1_REQUIRED 	Use HTTP/1.1 for the request 	[RFC7540, Section 7]
0xe-0xffffffff 	Unassigned 		

but unknown :scheme is not HTTP/2 error anyway.
)


> -Ilari

/ Kari Hurtta

Received on Sunday, 2 October 2016 11:11:04 UTC