2.2.2.2 PushStart Request

The purpose of the PushStart request is to stream ASF data packets to the server. The message body of the first PushStart request that the client sends after the PushSetup request always begins with an $H (Header) packet (which contains the ASF file header), which is then followed by the $D (Data) packets (each of which contains an ASF data packet). Subsequent PushStart requests can start with either a $C (Stream Change Notification) packet or a $D packet.

A server that receives a POST request can identify it as a PushStart request through the Content-Type (section 2.2.1.1) header. The media type specified on the Content-Type header MUST be "application/x-wms-pushstart".

The syntax of the PushStart request is defined as follows.

 WMS-PushStart-Request    = WMS-PushStart-Req-Line
                            WMS-PushStrtReq-Headers 
                            CRLF
                            WMS-PushStrtReq-Body 
   
 WMS-PushStart-Req-Line   = "POST" SP Request-URI SP HTTP-Version CRLF
  
 WMS-PushStrtReq-Headers = *( PushStrtReq-Header-REQ
                            / PushStrtReq-Header-OPT
                            / HTTP-Header-Types )
  
 PushStrtReq-Header-REQ  = Content-Length ; section 14.13 of [RFC2616]
                            / Content-Type; section 2.2.1.1
                            / Cookie; section 2.2.1.3
                            / Host; section 14.23 of [RFC2616]
                            / User-Agent; section  2.2.1.8 
  
 PushStrtReq-Header-OPT  = Authorization      ; [RFC2616] section 14.8
                           / Cache-Control    ; section 2.2.1.1 of [MS-WMSP]
                           / Proxy-Authorization ; [RFC2616] section 14.34 
                           / X-Accept-Authentication; section 2.2.1.9
  
 Playlist-Entry          = *<$D Data packet>  ; section 2.2.3.3
                           ( 1*<$E EOS packet>; section 2.2.3.4
                             / 1*<$F Fill packet> ) ; section 2.2.3.5
  
 WMS-PushStrtReq-Body    = *1<$H Header packet>; section 2.2.3.6
                           Playlist-Entry
                           *( <$C packet>      ; section 2.2.3.2
                              Playlist-Entry )

The syntax of the PushStart response is defined as follows.

  
 WMS-PushStart-Response   = Status-Line
                            WMS-PushStrtResp-Headers
  
 WMS-PushStrtResp-Headers = *( PushStrtResp-Header-REQ
                               / PushStrtResp-Header-OPT
                               / PushStrtResp-Pragma
                               / HTTP-Header-Types )
  
 PushStrtResp-Header-REQ   = Cache-Control; section 2.2.1.1 of [MS-WMSP]
                             / Server; section 2.2.1.5
  
 PushStrtResp-Header-OPT   = Proxy-Authenticate ; [RFC2616] section 14.33
                             / Set-Cookie; section 2.2.1.6
                             / Supported     ; section 2.2.1.7
                             / Via; [RFC2616] section 14.45
                             / WWW-Authenticate; [RFC2616] section 14.47
  
 PushStrtResp-Pragma       = "Pragma: " #PushStrtResp-Pragma-Types CRLF
 PushStrtResp-Pragma-Types = PushStrtResp-Token-REQ
                             / PushStrtResp-Token-OPT
  
 PushStrtResp-Token-REQ    = no-cache; section 2.2.1.4.1
  
 PushStrtResp-Token-OPT    = timeout; section 2.2.1.4.2