anchor.diff:    Reply, Msg: string;
   begin
     Result := False;
  -  Log('Sending username...');
  -  SendString('user|' + Username + '|' + Password);
  -  Reply := ReceiveString();
  -  Log('user reply: ' + Reply);
  -
  -  Result := ProcessReply(Reply, Msg);
  -
  -  if Result then
  -  begin
  -    FState := hsAuthenticated;
  -    Log('SendUser Successful');
  -    FStatusMessage := 'User authenticated.';
  -  end
  -  else
  -  begin
  -    Log('SendUser Failed');
  -    FState := hsConnected;
  -    FStatusMessage := 'Error logging in. ' + GetHGDCErrorMessage(Msg);
  +  //only do this if at least connected...
  +  if FState >= hsConnected then
  +  begin
  +    Log('Sending username...');
  +    SendString('user|' + Username + '|' + Password);
  +    Reply := ReceiveString();
  +    Log('user reply: ' + Reply);
  +
  +    Result := ProcessReply(Reply, Msg);
  +
  +    if Result then
  +    begin
  +      FState := hsAuthenticated;
  +      Log('SendUser Successful');
  +      FStatusMessage := 'User authenticated.';
  +    end
  +    else
  +    begin
  +      Log('SendUser Failed');
  +      FState := hsConnected;
  +      FStatusMessage := 'Error logging in. ' + GetHGDCErrorMessage(Msg);
  +    end;
     end;
   end;
   
  
positive.code:   Reply, Msg: string;
  begin
    Result := False;
    Log('Crapping on song id ' + IntToStr(id) + '...');
    SendString('vo|' + intToStr(id));
    Reply := ReceiveString();
  
negative.code:   Reply, Msg: string;
  begin
    Result := False;
  
    //only do this if at least authenticated and user is admin...
    if (FState >= hsAuthenticated) and FUserIsAdmin then
    begin
      Log('Pausing...');
      SendString('pause');
  