Пишу модуль для Apache. Нерабочий код.
Код синтетический - содержит лишь ключевые моменты без лишней шелухи. Поэтому обсуждать подход к реализации не имеет смысла.
От модуля требуется дописать строки к возвращаемым данным. Строки эти задаются специальной командой:
hunt@zeus:~/temp/apache/asdf$ nc 127.0.0.1 80
GET asdf
str1
str2
str3
но он это делать отказывается.
Добавление строк к данным происходит в строках 62 - 65:
for (i = 0; i < cfg->commands->nelts; i++) {
ap_fputs(f->next, bb,
APR_ARRAY_IDX(cfg->commands, i, asdf_command_t).name);
}
а сохранение в конфигурации в строках 116 - 121:
while (s) {
if (*s != '\n' && strlen(s) > 0 && strlen(s) < CMD_BUFF) {
strcpy(APR_ARRAY_PUSH(commands, asdf_command_t).name, s);
}
s = apr_strtok(NULL, CMD_DELIMITERS, &last);
}
Если раскомментировать строку 35:
// strcpy(APR_ARRAY_PUSH(srv_conf->commands, asdf_command_t).name, "qwerq");
то модуль будет исправно добавлять этот «qwerq».
Чтение данных из сокета и заполнение массива asdf_srv_conf->commands проверял, вроде как не должно быть ошибок. В логах ничего нет, что логично, ибо опыта разработки модулей apache у меня немного, и туплю скорее всего я, а не сервер.
Почему могут не сохраняться данные в per-server config?