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
|