ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

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

Вопросы по разработке мод уля


  • To: nginx-ru@xxxxxxxxx
  • Subject: Вопросы по разработке мод уля
  • From: "xlt" <nginx-forum@xxxxxxxx>
  • Date: Mon, 23 Jan 2012 07:39:04 -0500
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mickey.jlkhosting.com; s=x; h=Date:Sender:From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To; bh=885dCOL63FT84iSZUlDzHRvhrv3+FrtsCPEsFvFBsM8=; b=X7s4L2DpsgJnzAizE1FKo/Lb3/395h8fdznh3oKDDpfA0DM1AM41/1SkJIhJPbMwkSVtqC3uWNCfV+f+E5IQyO/lYdhtI6SXZB/ZstIspFp7tlfD4dQEsTX5kcNazBoS;

Как правильно выделить память из пула
для переменной? В первом варианте, не
выделяется дополнительно память для
ngx_html_code, а во втором вариант для ngx_html_code
выделяется всего 8 byte. С с знаком не
очень хорошо, прошу сильно не пинать.

И второй вопрос, как открыть правильно
не блокируемое соединение с другим http
сервером, чтобы получить от него данные
к примеру в xml формате, и потом
распарсерить и на основе этих данных в
браузер уже пользователю выбросить
результат. 

Вариант 1:
    static ngx_int_t ngx_http_gogogo_handler(ngx_http_request_t *r){
       
        // то что выдаем в браузер
        u_char ngx_html_code[] = "Hello, world!";
        //
        ngx_int_t rc;
        ngx_buf_t *buf;
        ngx_chain_t out;
       
        rc = ngx_http_discard_request_body(r);
     
        if (rc != NGX_OK && rc != NGX_AGAIN){
            ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,  "Failed
ngx_http_discard_request_body()");
            return rc;
        }
       
        // Если размер параметров больше 0
то, выдаем их в браузер
        if(r->args.len > 0){
        * ngx_html_code = (u_char *) ngx_pcalloc(r->pool, r->args.len +
1);
        ngx_cpymem(ngx_html_code, r->args.data, r->args.len);
        }
    }

Вариант 2:
    static ngx_int_t ngx_http_gogogo_handler(ngx_http_request_t *r){
     
        u_char ngx_hello[] = "Hello, world!";
        //
        ngx_int_t rc;
        ngx_buf_t *ngx_html_code;
       
        // очищаем body-раздел
        rc = ngx_http_discard_request_body(r);
     
        if (rc != NGX_OK && rc != NGX_AGAIN){
            ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,  "Failed
ngx_http_discard_request_body()");
            return rc;
        }
       
        if(r->args.len > 0){
        ngx_html_code = ngx_pcalloc(r->pool, r->args.len + 1);
        if (ngx_html_code == NULL){
             return NGX_HTTP_INTERNAL_SERVER_ERROR;
        }
        ngx_cpymem(ngx_html_code, r->args.data, r->args.len);
        }else{
        ngx_html_code = ngx_pcalloc(r->pool, sizeof(ngx_hello));
        if (ngx_html_code == NULL){
             return NGX_HTTP_INTERNAL_SERVER_ERROR;
        }
        ngx_cpymem(ngx_html_code, ngx_hello, sizeof(ngx_hello));
        }
     
    }

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,221537,221537#msg-221537

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.