ruby-lsapi 1.6 → 1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. data/README +3 -3
  2. data/ext/lsapi/lsruby.c +23 -8
  3. metadata +1 -1
data/README CHANGED
@@ -61,9 +61,9 @@ Two new environment variables has been introduced since Ruby LSAPI 1.4:
61
61
 
62
62
  LSAPI_MAX_REQS=n
63
63
 
64
- n is the maximum number of requests that a child process can serve.
65
- Default value is 1000. Once that number is reached, the child process will
66
- exit automatically. This will help in case of any memory leaks in Rails.
64
+ n is the maximum number of requests that a child process can serve. Default
65
+ value is 1,000,000. Once that number is reached, the child process will exit
66
+ automatically. This will help in case of any memory leaks in Rails.
67
67
 
68
68
  LSAPI_MAX_IDLE=n
69
69
 
data/ext/lsapi/lsruby.c CHANGED
@@ -24,8 +24,11 @@ static VALUE orig_defout;
24
24
 
25
25
  static VALUE orig_env;
26
26
 
27
+ static VALUE env_copy;
28
+
27
29
  static VALUE lsapi_env;
28
30
 
31
+
29
32
  static VALUE lsapi_objrefs;
30
33
 
31
34
  typedef struct lsapi_data
@@ -43,7 +46,7 @@ static lsapi_data * s_req_data;
43
46
  static int s_children = 0;
44
47
  static int s_cur_children = 0;
45
48
  static int s_req_processed = 0;
46
- static int s_max_reqs = 1000;
49
+ static int s_max_reqs = 1000000;
47
50
  static int s_max_idle_secs = 60;
48
51
  static int s_listenFd = -1;
49
52
  static int s_ppid = 0;
@@ -82,14 +85,15 @@ static int add_env( const char * pKey, int keyLen, const char * pValue, int valL
82
85
 
83
86
  static void clear_env()
84
87
  {
85
- rb_funcall( lsapi_env, rb_intern( "clear" ), 0 );
88
+ //rb_funcall( lsapi_env, rb_intern( "clear" ), 0 );
89
+ rb_funcall( lsapi_env, rb_intern( "replace" ), 1, env_copy );
86
90
  }
87
91
 
88
92
  static void setup_cgi_env( lsapi_data * data )
89
93
  {
90
94
 
91
95
  clear_env();
92
-
96
+
93
97
  LSAPI_ForeachHeader_r( data->req, add_env, data );
94
98
  LSAPI_ForeachEnv_r( data->req, add_env, data );
95
99
 
@@ -204,15 +208,15 @@ static int lsapi_fork_child()
204
208
  }
205
209
  else if ( pid == -1 )
206
210
  {
207
- perror( "fork() failed" );
208
- break;
211
+ perror( "fork() failed, please increase process limit" );
209
212
  }
210
213
  else
211
214
  {
212
215
  ++s_cur_children;
213
- close( g_req.m_fd );
214
- g_req.m_fd = -1;
215
216
  }
217
+ close( g_req.m_fd );
218
+ g_req.m_fd = -1;
219
+
216
220
  }
217
221
  else
218
222
  {
@@ -571,11 +575,13 @@ static VALUE lsapi_setsync(VALUE self,VALUE sync)
571
575
 
572
576
  void Init_lsapi()
573
577
  {
578
+ VALUE remove_env;
574
579
  int n;
575
580
  char * p = getenv( "LSAPI_CHILDREN" );
576
581
  if ( p )
577
582
  {
578
583
  s_children = atoi( p );
584
+ unsetenv( "LSAPI_CHILDREN" );
579
585
  }
580
586
 
581
587
  p = getenv( "LSAPI_MAX_REQS" );
@@ -584,6 +590,7 @@ void Init_lsapi()
584
590
  n = atoi( p );
585
591
  if ( n > 0 )
586
592
  s_max_reqs = n;
593
+ unsetenv( "LSAPI_MAX_REQS" );
587
594
  }
588
595
 
589
596
  p = getenv( "LSAPI_MAX_IDLE" );
@@ -591,6 +598,7 @@ void Init_lsapi()
591
598
  {
592
599
  n = atoi( p );
593
600
  s_max_idle_secs = n;
601
+ unsetenv( "LSAPI_MAX_IDLE" );
594
602
  }
595
603
 
596
604
  orig_stdin = rb_stdin;
@@ -599,7 +607,14 @@ void Init_lsapi()
599
607
  orig_defout = rb_defout;
600
608
  #endif
601
609
  orig_env = rb_const_get( rb_cObject, rb_intern("ENV") );
602
- // lsapi_env = orig_env;
610
+
611
+ env_copy = rb_funcall( orig_env, rb_intern( "to_hash" ), 0 );
612
+ //Do not need those environments after initialization
613
+ remove_env = rb_str_new( "RAILS_ROOT", 10 );
614
+ rb_funcall( env_copy, rb_intern( "delete" ), 1, remove_env );
615
+ remove_env = rb_str_new( "RAILS_ENV", 9 );
616
+ rb_funcall( env_copy, rb_intern( "delete" ), 1, remove_env );
617
+
603
618
  lsapi_env = rb_hash_new();
604
619
  //redefine ENV using a hash table, should be faster than char **environment
605
620
  rb_define_global_const("ENV", lsapi_env);
metadata CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: ruby-lsapi
5
5
  version: !ruby/object:Gem::Version
6
- version: "1.6"
6
+ version: "1.7"
7
7
  date: 2006-08-22 00:00:00 -04:00
8
8
  summary: A ruby extension for fast communication with LiteSpeed Web Server.
9
9
  require_paths: