Поддержка http over named pipes в apache 2.2 win32

Владимир16 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
24.12.2012

Нужно добавить поддержку работы по протоколу HTTP к веб-серверу apache 2.2.x для виндовс.

Надо добавить поддержку ключа командной строки -P (кажется он свободен, если нет - возьмите другую букву) после которого может быть указано имя named pipe. Если этот ключ указан при запуске, то апач не должен создавать слушающий TCP сокет, а должен слушать только в named pipe с именем переданным после ключа -P. А если ключа -P не передано - то апач должен работать как обычно (принимать запросы через TCP).

Грубо говоря надо подменить код по пересылке данных по сети и работе с сокетами на код, который данные шлет либо по сети, либо через named pipe. То есть если апач работает в режиме HTTP over named pipe, то вместо accept вызывать CreateNamedPipeW+ConnectNamedPIpe, вместо close - DisconnectNamedPipe+CloseHandle, вместо select - WaitForSingleObject, вместо recv - ReadFile, вместо send - WriteFile .

Такое уже было сделано для apache 1.3.x - можем передать патчи чтобы было легче работать над веткой 2.2.

Модифицированный апач при использовании http over named pipe естествено должен уметь поддерживать несколько параллельных соединенией. Естественно все модули собранные для "обычного" апача должны работать и на этом модифицированном.

Работать оно должно на win2k и выше (поддержкой win95 не надо заморачиваться). Никаких новых утечек памяти ваши изменения не должны добавлять - при тестировании надо будет сделать 10тысяч запросов и убедиться что потребление памяти апачем не растет.

Для тестирования мы можем дать ab (apachebench) которая умеет общаться через named pipes. С помощью ab надо будет убедиться что апач через named pipe может работать с 20 запросами одновременно.

Еще моменты:

* Надо будет поддерживать unicode в имени named pipe.

* никаких новых зависимостей в апач добавляться не должно (например зависимость на .net, cygwin И тд).

* если на named pipe имя которой передано после -P уже слушает другой процесс, надо завершить выполнение с ошибкой.

* модифицированный апач должен нормально работать не под админским аккаунтом (оригинальный апач это может)

* добавлять коментарии в те строки в сырцах, которые добавляем

* дорабатывать надо последнюю версию в ветке 2.2

Заявки фрилансеров