Russian Apache Switch to English
Switch to Russian koi8-r
windows=1251
cp-866
iso8859-5
Russian Apache Как это работает Рекоммендации Где взять Как установить Как настроить Статус и поддержка
Краткий обзор FAQ Список рассылки Благодарности Поиск по серверу Powered by Russian Apache
Russian Apache mailing list archive (apache-rus@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [apache-rus] mod_python



In <Pine.SOL2.3.96.SK.990404171645.19869A-100000@sun.med.ru> Oleg Broytmann (phd@sun.med.ru) wrote:
OB> Здравствуйте.

OB> On Sat, 3 Apr 1999, Khimenko Victor wrote:
>> С mod_fastcgi была следующая проблема: результат работы СИЛЬНО низкоуровневых
>> функций типа ap_bwrite не перекодируется. Это нужно делать "руками" (проще всего
>> через вызов функции ra_data_server2client) перед вызовом bwrite ...

OB>    Ага, действительно, есть bwrite, я его окружил ifdef, вставил
OB> server2client, вроде, все заработало (ну, я не очень тестировал - несколько
OB> CGI проверил на юниксовых и форточных браузерах).

Это ты, Сова, плохо придумала. Там одним server2client не обойдешься...

OB>    Надо ли перекодировать заголовки, отправляемые ap_send_http_header? Если
OB> надо, то чем?

Нет. Вернее -- уже поздно. ap_send_http_header выдает накопленные заголовки
"по списку". Перекодировать нужно при помощении в этот список. AFAIK -- Alex
должен знать лучше...

OB>    Как я понял, server2client аллоцирует память под newbuf. Надо ли ее
OB> освобождать? каким вызовом?

Ничего он не "аллоцирует". Он использует один заранее распределенный заранее
буфер (один на request). И посему этот буфер может и переполнится, однако...
Вот кусок из правок http_protocol.c:

#ifdef RUSSIAN_APACHE
          unsigned char *newbuf,*p;
          int newlen=0;
          if (ra_charset_active(r))
            {
              ra_data_server2client(r,(char*)mm+offset,n,&newbuf,&newlen);
              p=newbuf;
              while(newlen > 0)
                {
                  w = ap_bwrite(r->connection->client, p, newlen);
                  if(w<=0) goto RECODE_DONE;
                  newlen-=w;
                  p+=w;
                }
              w=n;
            }
          else
            w = ap_bwrite(r->connection->client, (char *) mm + offset, n);
        RECODE_DONE:;
#else
          w = ap_bwrite(r->connection->client, (char *) mm + offset, n);
#endif

Понятно, что все это -- взамен одной строки ...








Спонсоры сайта:

[ Russian Apache ] [ Как это работает ] [ Рекомендации ] [ Где взять ] [ Как установить ] [ Как настроить ] [ Статус и поддержка ] [ Краткий обзор ] [ FAQ ] [ Список рассылки ] [ Благодарности ] [ Поиск по серверу ] [ Powered by Russian Apache ] [ Apache-talk archive ]

"Russian Apache" includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/) See Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C) 1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.