В предыдущих версиях быда опция: "Пропускать логин - программа начинает работать после соединения с Game-Сервером". Кто подскажет для чего это? Из кода ниже тоже непонятно что оно делает

.
delphi Код:
//пропускать логин?
//если (пропускать логин и мы не в игре)
if isPassLogin and (not IsGamel) then
begin
//отсылаем данные, сначала длину, а потом сам пакет
send(CSockl,PacketB, 2, 0);
repeat
until send(CSockl, PacketB, recv(SSockl, PacketB, $FFFF, 0), 0)<=0;
end
else
begin//иначе (пропускать логин и мы в игре)
//прием пакетов
repeat
if not GetSocketData(SSockl, Packet.DataB, Packet.Size-2) then break;
if IsGamel
then PacketProcesor(PacketB, CSockl, id, 4)
else PacketProcesor(PacketB, CSockl, id, 2);
if not GetSocketData(SSockl, Packet, 2) then break;
//sendMSG('size: '+IntToStr(Packet.Size));
until False;
end;
Такое ощушение что изначально должна была быть возможность залогиниваться с помошью PH, но это так и не было реализовано.
Добавлено через 1 час 28 минут
И ещё просветите зачем функция:
delphi Код:
function GetSocketData(Socket: TSocket; var Data; const Size: Word): Boolean;
var
Position: Word;
Len: Integer;
DataB: array[0..$5000] of Byte absolute Data;
begin
Result:=False;
Position:=0;
while Position<Size do begin
Len:=recv(Socket,DataB[Position],1,0);
if Len<=0 then Exit;
Inc(Position, Len);
end;
Result:=True;
end;
Я как понял она с помошью "recv" считывает нужное количество байт с сокета по 1 байту. Почему так сделали? Что случится если попытаться сразу считать необходимое кол-во байт одним махом.
зы: прошу прощения за обилие вопросов, приспичило разобраться с программой.