ИзнаСИлование программного кода

Видели когда-нибудь нижепроцитированное? Веб-сервер Apache на домашней машине сегодня порадовал при попытке скачать на вторую машину фильм в 3.9 гигабайта (обратите внимание на «content-length»). Корень проблемы ясен — какому-то программисту зачем-то понадобилось использовать знаковый integer для поля длины файла, соответственно всё, что больше двух гигабайт становится отрицательной длины. Чуть попозже попробую присоединить к этому файлу ещё мегабат двести и посмотреть как лопнет мозг у Apache при попытке засунуть это значение в 32 бита.

HTTP/1.1 200 OK
Date: Thu, 29 Nov 2007 18:04:09 GMT
Server: Apache/1.3.33 (Win32) PHP/5.2.0-dev
Last-Modified: Thu, 21 Jun 2007 11:27:00 GMT
ETag: "0-f702ceea-467a6084"
Accept-Ranges: bytes
Content-Length: -150810902
Connection: close
Content-Type: video/x-msvideo

Попробовал. Файл 4171 мегабайт Apache 1.3.33 показал как 74-х мегабайтный.

Комментарии 8

lgl.livejournal.com № 1
Помню встречался с этим, исправили это насколько помню в апаче версии 2.2, даже пришлось специально его компилировать, чтобы люди могли нормально DVD фильмы скачивать.
Евгений Степанищев (bolknote.ru) автор № 6
Я на это смотрю иначе — глупая ошибка в программе, которую делали 12 (!) лет.
Евгений Степанищев (bolknote.ru) автор № 8
Странно, вроде и побеждать-то нечего — взял тип побольше и все дела.