Пишу, по большей части, про историю, свою жизнь и немного про программирование.

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

Видели когда-нибудь нижепроцитированное? Веб-сервер 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 2007

Помню встречался с этим, исправили это насколько помню в апаче версии 2.2, даже пришлось специально его компилировать, чтобы люди могли нормально DVD фильмы скачивать.

indeyets.livejournal.com 2007

потому что нефиг пользоваться устаревшим ПО! ;)

Евгений Степанищев (bolknote.ru) 2007

Ошибка же невероятно глупая и очевидная!

Евгений Степанищев (bolknote.ru) 2007

Столько лет делали и такая ошибка в коде… Мда…

alexanderich.livejournal.com 2007

Старая ошибка, старого апача.

Евгений Степанищев (bolknote.ru) 2007

Я на это смотрю иначе — глупая ошибка в программе, которую делали 12 (!) лет.

danilashtan.moikrug.ru 2007

Проблему с «4 гигабайтами», насколько я помню, не победили и в новом. :)

Евгений Степанищев (bolknote.ru) 2007

Странно, вроде и побеждать-то нечего — взял тип побольше и все дела.