     private var digestNC:uint = 1;
 
     private var bcTimer:Timer;
+    private var kaTimer:Timer = new Timer(KEEPALIVE);
     private var connectionBroken:Boolean = false;
 
     private var nc:NetConnection = null;

      prevMethod = sendTeardownReq;
    }

    private function onAsyncError(event:AsyncErrorEvent):void {
      bcTimer.stop();
      ErrorManager.dispatchError(728);

      prevMethod = sendPlayReq;
    }

    private function sendGetParamReq():void {
      var req:String =
        "GET_PARAMETER " + getControlURL() + " RTSP/1.0\r\n" +
        "CSeq: " + (++cSeq) + "\r\n" +
        "User-Agent: " + userAgent + "\r\n" +
        "Session: " + session + "\r\n" +
        auth.authorizationHeader("GET_PARAMETER", authState, authOpts, urlParsed, digestNC++) +
        "\r\n";
      Logger.log('RTSP OUT:', req);
      handle.writeUTFBytes(req);

      prevMethod = sendGetParamReq;
    }

    private function sendPauseReq():void {
      if (!this.supportCommand("PAUSE")) {
        ErrorManager.dispatchError(825, null, true);
