anchor.diff:    Reply, Msg: string;
   begin
     Result := False;
  -  if FUserIsAdmin then
  +
  +  //only do this if at least authenticated and user is admin...
  +  if (FState >= hsAuthenticated) and FUserIsAdmin then
     begin
       Log('Pausing...');
       SendString('pause');
  
positive.code:   Reply, Msg: string;
  begin
    Result := False;
    Log('Crapping on song id ' + IntToStr(id) + '...');
    SendString('vo|' + intToStr(id));
    Reply := ReceiveString();
  
negative.code:   i: integer;
  begin
    Result := False;
  
    //only do this if at least authenticated...
    if FState >= hsAuthenticated then
    begin
      FileSizeValue := FileSize(Filename);
      Log('Queueing track ' + ExtractFilename(Filename) + '...');
      SendString('q|' + ExtractFilename(Filename) + '|' +
        IntToStr(FileSizeValue));
  
      Reply := ReceiveString();
      Log('q reply: ' + Reply);
  
      Result := ProcessReply(Reply, Msg);
  
      if Result then
      begin
        Log('q successful, sending data...');
  
        SetLength(DataArray, BLOCK_SIZE);
        AssignFile(Fin, Filename);
  
        try
          FileMode := fmOpenRead;
          Reset(Fin, 1);
  
          for i := 0 to (FileSizeValue div BLOCK_SIZE) do
          begin
            if (FileSizeValue - i * BLOCK_SIZE) > BLOCK_SIZE then
              SizeToSend :=  BLOCK_SIZE
            else
              SizeToSend := FileSizeValue - i * BLOCK_SIZE;
  
            BlockRead(Fin, DataArray[0], SizeToSend);
            Socket.SendBuffer(@DataArray[0], SizeToSend);
  
            if Assigned(ProgressCallBack) then
              ProgressCallBack(Round((i * BLOCK_SIZE / FileSizeValue) * 100));
  
          end;
  
        finally
          CloseFile(fin);
        end;
  
        SetLength(DataArray, 0);
  
        Reply := ReceiveString();
        Log('q data send reply: ' + Reply);
  
        Result := ProcessReply(Reply, Msg);
        if Result then
          FStatusMessage := 'Queued.';
      end
      else
      begin
        Log('q Failed');
        FStatusMessage := 'Error queueing track. ' + GetHGDCErrorMessage(Msg);
      end;
    end;
  end;
  
  