ПРОЕКТЫ 


  АРХИВ 


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]

Re: Течет память при проксировании


  • To: "nginx-ru@xxxxxxxxx" <nginx-ru@xxxxxxxxx>
  • Subject: Re: Течет память при проксировании
  • From: Denis F. Latypoff <latypoff@xxxxxxxxx>
  • Date: Mon, 28 May 2012 08:15:42 +0700
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1338167743; bh=LNT+iR/M4Uf6IXaQtkJnCa/qmWY5Aol6PqZXlJoYuMY=; h=From:To:In-Reply-To:References:Subject:MIME-Version:Message-Id: Date:Content-Type; b=KuvUqH5NE7LuBBT55W8hbx5jmFgnCNF1AmUxrVV9qNYH7N4N4TCosyWj3JiXaHyk0 o/SaaYjIYghns64hsQxxlNNEffMME9ZGiiVEJzz4ZXiLoPUdEjnVXh9AOwjd25ZcZK x6lP8ETZpIxTWsVu7GnrWkFSHIMc7iMiykYe1qFE=
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1338167743; bh=LNT+iR/M4Uf6IXaQtkJnCa/qmWY5Aol6PqZXlJoYuMY=; h=From:To:In-Reply-To:References:Subject:MIME-Version:Message-Id: Date:Content-Type; b=KuvUqH5NE7LuBBT55W8hbx5jmFgnCNF1AmUxrVV9qNYH7N4N4TCosyWj3JiXaHyk0 o/SaaYjIYghns64hsQxxlNNEffMME9ZGiiVEJzz4ZXiLoPUdEjnVXh9AOwjd25ZcZK x6lP8ETZpIxTWsVu7GnrWkFSHIMc7iMiykYe1qFE=
  • In-reply-to: <631221338164211@web26g.yandex.ru>
  • References: <210681338047095@web29g.yandex.ru> <20120527164545.GI31671@mdounin.ru> <631221338164211@web26g.yandex.ru>

28.05.2012, 07:16, "Denis F. Latypoff" <latypoff@xxxxxxxxx>:
> 27.05.2012, 23:45, "Maxim Dounin" <mdounin@xxxxxxxxxx>:
>
> [...]
>
>>  2)
>>>       geoip_city     /usr/share/GeoIP/GeoIPCity.dat   utf8;
>>>       geoip_org      /usr/share/GeoIP/GeoIPASNum.dat  utf8;
>>  Модуль geoip - он, конечно, хороший, но пользуется библиотекой
>>  от MaxMind'а.  А та известна как минимум тем, что падает на
>>  некорректных данных в базе.  Так что я бы рекомендовал выключить и
>>  посмотреть, что будет.
>
> Всем патч!

А если причесать, то как-то так.

-- 
br, Denis F. Latypoff.
diff -ru nginx-1.3.0/src/http/modules/ngx_http_geoip_module.c 
nginx-1.3.0.geoip/src/http/modules/ngx_http_geoip_module.c
--- nginx-1.3.0/src/http/modules/ngx_http_geoip_module.c        2012-05-14 
09:00:17.000000000 -0500
+++ nginx-1.3.0.geoip/src/http/modules/ngx_http_geoip_module.c  2012-05-27 
20:10:19.000000000 -0500
@@ -293,24 +293,33 @@
 
     const char             *val;
     ngx_http_geoip_conf_t  *gcf;
+    size_t                  len;
 
     gcf = ngx_http_get_module_main_conf(r, ngx_http_geoip_module);
-
     if (gcf->org == NULL) {
         goto not_found;
     }
 
     val = handler(gcf->org, ngx_http_geoip_addr(r, gcf));
-
     if (val == NULL) {
         goto not_found;
     }
 
-    v->len = ngx_strlen(val);
+    len = ngx_strlen(val);
+    v->data = ngx_pnalloc(r->pool, len);
+    if (v->data == NULL) {
+        ngx_free ((void *) val);
+        return NGX_ERROR;
+    }
+
+    ngx_memcpy (v->data, val, len);
+
+    v->len = len;
     v->valid = 1;
     v->no_cacheable = 0;
     v->not_found = 0;
-    v->data = (u_char *) val;
+
+    ngx_free ((void *) val);
 
     return NGX_OK;
 
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.