ИзнаСИлование программного кода
Видели когда-нибудь нижепроцитированное? Веб-сервер 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-х мегабайтный.
Помню встречался с этим, исправили это насколько помню в апаче версии 2.2, даже пришлось специально его компилировать, чтобы люди могли нормально DVD фильмы скачивать.
потому что нефиг пользоваться устаревшим ПО! ;)
Ошибка же невероятно глупая и очевидная!
Столько лет делали и такая ошибка в коде… Мда…
Старая ошибка, старого апача.
Я на это смотрю иначе — глупая ошибка в программе, которую делали 12 (!) лет.
Проблему с «4 гигабайтами», насколько я помню, не победили и в новом. :)
Странно, вроде и побеждать-то нечего — взял тип побольше и все дела.