4.7 Client Push State Diagram
The push state diagram reflects the client's states during the push distribution sequence specified in section 4.1.

Figure 8: Client push state diagram
All requests illustrated in the diagram are sent by the client to the server in the context of an HTTP request message using the POST method. All server responses are in the context of an HTTP response message.
Following the PushSetup request, the client verifies that the response adheres to the syntax specified in section 2.2.2.2.
If the response received by the client is a 401 or 407, then authentication is required as specified in section 3.1.5.2. When the client is ready, the client shall resubmit the HTTP request with the authentication credentials that the server requested. In the event the HTTP response indicates an error other than 401 or 407, the session ends.
After the client has received a successful response from the server, the client evaluates the response, and then send a PushStart request to the server, as specified in section 3.1.4.2.1. The client then begins sending packets as specified in section 3.1.4.3.
While the client is in the PushStart_InProgress state, it can receive a notification that the last ASF packet has been sent, as specified in section 3.1.4.2.1. This event causes a transition to the End state.
If the value of the Length-Remaining variable (section 3.1.1) reaches 0 while the client is in the PushStart_InProgress state, then the client waits for a response to the PushStart request, as specified in section 3.1.4.4. If the client is in PushStart_InProgress state and it receives a response to a PushStart request, then it transitions to the PushSetup Complete state.