Welcome! Log In Create A New Profile

Advanced

Re: Указатель на произвольные данные в структуре ngx_connection_s

Maxim Dounin
March 24, 2017 08:22AM
Hello!

On Fri, Mar 24, 2017 at 12:44:10PM +0300, Pavel Balaev wrote:

> Добрый день.
>
> Я пытаюсь написать модуль, который должен хранить некоторые произвольные
> данные на протяжении времени жизни сессии (keep-alive). В структуре ngx_connection_s есть
> пул памяти, при первом реквесте я аллоцирую память для ctx =
> ngx_pcalloc(r->connection->pool,..., но проблема в том, что полученный
> адрес негде прикрепить. Локально я пропатчил структуру ngx_connection_s и сохраняю
> указатель в r->connection->ctx. У меня есть подозрения, что я делаю
> что-то не так.

Лучше всего - не пытаться ничего хранить "на протяжении времени
жизни сессии", вас ждут сюрпризы с тем, когда именно и по каким
причинам соеденение может закрываться, а равно с тем, какие именно
запросы могут присутствовать в одном соединении. Протокол HTTP не
предусматривает какой-либо зависимости от соединения, и не надо её
вводить - а то получится, как у MS NTLM-авторизацией для HTTP:
вроде и есть, но противоречит протоколу, и в любых конфигурациях,
отличных от тривиальных, скорее не работает, чем работает.

Если изложенное выше вас не переубедило, и вы хорошо понимаете,
зачем вам хранить данные именно в соединении - то это можно
сделать в форме pool cleanup handler'а: добавить свой cleanup
handler с помощью ngx_pool_cleanup_add(), а при необходимости
получить данные обратно - найти его в списке c->pool->cleanup.
Пример подобного хранения данных (правда, в пуле запроса, а не
соединения) можно посмотреть, например, в модуле realip.

--
Maxim Dounin
http://nginx.org/
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Указатель на произвольные данные в структуре ngx_connection_s

Pavel Balaev March 24, 2017 05:46AM

Re: Указатель на произвольные данные в структуре ngx_connection_s

Maxim Dounin March 24, 2017 08:22AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 270
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready