fcgi 0.8.8 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ Copyright (c) 2009 saks
2
+ Copyright (c) 2013 mva
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,6 +1,6 @@
1
- = fcgi - FastCGI library for Ruby
1
+ = fcgi - The New generation of FastCGI library for Ruby.
2
2
 
3
- Version 0.8.7
3
+ Version 0.9.1
4
4
 
5
5
  == Depends
6
6
 
@@ -12,11 +12,7 @@ Version 0.8.7
12
12
 
13
13
  == Install
14
14
 
15
- $ ruby install.rb config
16
- (Pure Ruby Version: ruby install.rb config --without-ext)
17
- (Some systems need: ruby install.rb config -- --with-fcgi-include=/usr/local/include --with-fcgi-lib=/usr/local/lib)
18
- $ ruby install.rb setup
19
- # ruby install.rb install
15
+ $ gem install ruby-fcgi-ng
20
16
 
21
17
  == Usage
22
18
  === Class Method
@@ -42,7 +38,6 @@ Version 0.8.7
42
38
  used in this way, as it dynamically adds a large number of methods
43
39
  to itself each time a new instance is created.
44
40
 
45
-
46
41
  === Instance Method
47
42
  --- FCGI#finish
48
43
  Finish
@@ -60,11 +55,12 @@ Version 0.8.7
60
55
  Returns Environment(Hash)
61
56
 
62
57
  == Sample
58
+
63
59
  Using the FastCGI native interface:
64
60
 
65
61
  #!/usr/bin/ruby
66
62
  require "fcgi"
67
-
63
+
68
64
  FCGI.each {|request|
69
65
  out = request.out
70
66
  out.print "Content-Type: text/plain\r\n"
@@ -104,7 +100,9 @@ standard CGI library.
104
100
 
105
101
  fcgi.c 0.1 Copyright (C) 1998-1999 Network Applied Communication Laboratory, Inc.
106
102
  0.8 Copyright (C) 2002 MoonWolf <moonwolf@moonwolf.com>
103
+ 0.9 Copyright (C) 2013 MoonWolf <mva@mva.name>
107
104
 
108
105
  fastcgi.rb 0.7 Copyright (C) 2001 Eli Green
109
106
  fcgi.rb 0.8 Copyright (C) 2002 MoonWolf <moonwolf@moonwolf.com>
110
107
  fcgi.rb 0.8.5 Copyright (C) 2004 Minero Aoki
108
+
@@ -44,8 +44,8 @@ thread is supposed to write a message every 10 seconds, but under older
44
44
  versions of ruby-fcgi it does not do so if it is waiting for a new request.
45
45
 
46
46
  #!/usr/local/bin/ruby
47
- require "fcgi"
48
-
47
+ require "fcgi"
48
+
49
49
  Thread.new do
50
50
  f = File.new("/tmp/fcgi.log","a")
51
51
  f.sync=true
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.9.1
@@ -0,0 +1 @@
1
+ # Use ruby extconf.rb to generate makefile
File without changes
@@ -11,12 +11,21 @@
11
11
  #include <fcntl.h>
12
12
 
13
13
  #include "ruby.h"
14
+
15
+ #ifndef RSTRING_PTR
16
+ #define RSTRING_PTR(str) (RSTRING(str)->ptr)
17
+ #endif
18
+ #ifndef RSTRING_LEN
19
+ #define RSTRING_LEN(str) (RSTRING(str)->len)
20
+ #endif
21
+
14
22
  #ifdef HAVE_FASTCGI_FCGIAPP_H
15
23
  #include <fastcgi/fcgiapp.h>
16
24
  #else
17
25
  #include "fcgiapp.h"
18
26
  #endif
19
27
 
28
+
20
29
  static VALUE cFCGI;
21
30
  static VALUE eFCGIError;
22
31
  static VALUE cFCGIStream;
@@ -54,9 +63,9 @@ static VALUE fcgi_s_accept(VALUE self)
54
63
  int status;
55
64
  FCGX_Request *req;
56
65
  fd_set readfds;
57
-
66
+
58
67
  req = ALLOC(FCGX_Request);
59
-
68
+
60
69
  status = FCGX_InitRequest(req,0,0);
61
70
  if (status != 0) {
62
71
  rb_raise(eFCGIError, "FCGX_Init() failed");
@@ -68,7 +77,7 @@ static VALUE fcgi_s_accept(VALUE self)
68
77
  if (rb_thread_select(req->listen_sock+1, &readfds, NULL, NULL, NULL) < 1) {
69
78
  return Qnil;
70
79
  }
71
-
80
+
72
81
  status = FCGX_Accept_r(req);
73
82
  if (status >= 0) {
74
83
  fcgi_data *data;
@@ -84,7 +93,7 @@ static VALUE fcgi_s_accept(VALUE self)
84
93
  if (flags & O_NONBLOCK) {
85
94
  fcntl(fd, F_SETFL, flags & ~O_NONBLOCK);
86
95
  }
87
-
96
+
88
97
  obj = Data_Make_Struct(self, fcgi_data, fcgi_mark, fcgi_free_req, data);
89
98
  data->req = req;
90
99
  data->in = Data_Wrap_Struct(cFCGIStream, 0, 0, req->in);
@@ -103,7 +112,7 @@ static VALUE fcgi_s_accept(VALUE self)
103
112
  OBJ_TAINT(value);
104
113
  rb_hash_aset(data->env, key, value);
105
114
  }
106
-
115
+
107
116
  return obj;
108
117
  } else {
109
118
  return Qnil;
@@ -113,7 +122,7 @@ static VALUE fcgi_s_accept(VALUE self)
113
122
  static VALUE fcgi_s_each(VALUE self)
114
123
  {
115
124
  VALUE fcgi;
116
-
125
+
117
126
  while ((fcgi = fcgi_s_accept(self)) != Qnil) {
118
127
  rb_yield(fcgi);
119
128
  }
@@ -164,11 +173,11 @@ static VALUE fcgi_env(VALUE self)
164
173
  static VALUE fcgi_finish(VALUE self)
165
174
  {
166
175
  fcgi_data *data;
167
-
176
+
168
177
  Data_Get_Struct(self, fcgi_data, data);
169
-
178
+
170
179
  FCGX_Finish_r(data->req);
171
-
180
+
172
181
  return Qtrue;
173
182
  }
174
183
 
@@ -266,16 +275,19 @@ static VALUE fcgi_stream_printf(int argc, VALUE *argv, VALUE out)
266
275
 
267
276
  static VALUE fcgi_stream_puts _((int, VALUE*, VALUE));
268
277
 
269
- static VALUE fcgi_stream_puts_ary(VALUE ary, VALUE out)
278
+ static VALUE fcgi_stream_puts_ary(VALUE ary, VALUE out, int recur)
270
279
  {
271
280
  VALUE tmp;
272
281
  int i;
273
282
 
283
+ if (recur) {
284
+ tmp = rb_str_new2("[...]");
285
+ fcgi_stream_puts(1, &tmp, out);
286
+ return Qnil;
287
+ }
288
+
274
289
  for (i=0; i<RARRAY_LEN(ary); i++) {
275
290
  tmp = RARRAY_PTR(ary)[i];
276
- if (rb_inspecting_p(tmp)) {
277
- tmp = rb_str_new2("[...]");
278
- }
279
291
  fcgi_stream_puts(1, &tmp, out);
280
292
  }
281
293
  return Qnil;
@@ -297,7 +309,7 @@ static VALUE fcgi_stream_puts(int argc, VALUE *argv, VALUE out)
297
309
  line = rb_str_new2("nil");
298
310
  break;
299
311
  case T_ARRAY:
300
- rb_protect_inspect(fcgi_stream_puts_ary, argv[i], out);
312
+ rb_exec_recursive(fcgi_stream_puts_ary, argv[i], out);
301
313
  continue;
302
314
  default:
303
315
  line = argv[i];
@@ -358,11 +370,10 @@ static VALUE fcgi_stream_ungetc(VALUE self, VALUE ch)
358
370
  return INT2NUM(c);
359
371
  }
360
372
 
361
- static VALUE fcgi_stream_gets(VALUE self)
362
- {
373
+ static VALUE fcgi_stream_gets(VALUE self) {
363
374
  FCGX_Stream *stream;
364
375
  char buff[BUFSIZ];
365
- VALUE str = rb_str_new("", 0);
376
+ VALUE str = rb_str_new(0,0);
366
377
  OBJ_TAINT(str);
367
378
 
368
379
  if (rb_safe_level() >= 4 && !OBJ_TAINTED(self)) {
@@ -408,7 +419,7 @@ static VALUE fcgi_stream_read(int argc, VALUE *argv, VALUE self)
408
419
  }
409
420
  str = rb_str_new(buff, n);
410
421
  OBJ_TAINT(str);
411
-
422
+
412
423
  while(!FCGX_HasSeenEOF(stream)) {
413
424
  n = FCGX_GetStr(buff, 16384, stream);
414
425
  CHECK_STREAM_ERROR(stream);
@@ -508,9 +519,9 @@ static VALUE fcgi_stream_setsync(VALUE self,VALUE sync)
508
519
 
509
520
 
510
521
  void Init_fcgi() {
511
-
522
+
512
523
  FCGX_Init();
513
-
524
+
514
525
  cFCGI = rb_define_class("FCGI", rb_cObject);
515
526
  eFCGIError =rb_define_class_under(cFCGI, "Error", rb_eStandardError);
516
527
  rb_define_singleton_method(cFCGI, "accept", fcgi_s_accept, 0);
@@ -522,7 +533,7 @@ void Init_fcgi() {
522
533
  rb_define_method(cFCGI, "err", fcgi_err, 0);
523
534
  rb_define_method(cFCGI, "env", fcgi_env, 0);
524
535
  rb_define_method(cFCGI, "finish", fcgi_finish, 0);
525
-
536
+
526
537
  cFCGIStream = rb_define_class_under(cFCGI, "Stream", rb_cObject);
527
538
  eFCGIStreamError =rb_define_class_under(cFCGIStream, "Error", rb_eStandardError);
528
539
  eFCGIStreamUnsupportedVersionError =
@@ -0,0 +1,33 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = %q{fcgi}
3
+ s.version = "0.9.1"
4
+
5
+ s.authors = [%q{mva}]
6
+ s.date = %q{2013-02-20}
7
+ s.description = %q{FastCGI is a language independent, scalable, open extension to CGI that provides high performance without the limitations of server specific APIs. This version aims to be compatible with both 1.8.x and 1.9.x versions of Ruby, and also will be ported to 2.0.x.}
8
+ s.email = %q{mva@mva.name}
9
+ s.extensions = [%q{ext/fcgi/extconf.rb}]
10
+ s.extra_rdoc_files = [
11
+ "LICENSE",
12
+ "README.rdoc",
13
+ "README.signals"
14
+ ]
15
+ s.rdoc_options = ["--charset=UTF-8"]
16
+ s.files = [
17
+ "VERSION",
18
+ "ext/fcgi/MANIFEST",
19
+ "ext/fcgi/Makefile",
20
+ "ext/fcgi/extconf.rb",
21
+ "ext/fcgi/fcgi.c",
22
+ "lib/fcgi.rb",
23
+ "fcgi.gemspec"
24
+ ]
25
+ s.test_files = [
26
+ "test/helper.rb",
27
+ "test/test_fcgi.rb"
28
+ ]
29
+ s.homepage = %q{http://github.com/alphallc/ruby-fcgi-ng}
30
+ s.require_paths = [%q{lib}]
31
+ s.summary = %q{FastCGI library for Ruby.}
32
+ end
33
+
@@ -1,25 +1,30 @@
1
1
  =begin
2
2
 
3
- fcgi.rb 0.8.5 - fcgi.so compatible pure-ruby FastCGI library
3
+ fcgi.rb 0.9.0 - fcgi.so compatible pure-ruby FastCGI library
4
4
 
5
5
  fastcgi.rb Copyright (C) 2001 Eli Green
6
6
  fcgi.rb Copyright (C) 2002-2003 MoonWolf <moonwolf@moonwolf.com>
7
7
  fcgi.rb Copyright (C) 2004 Minero Aoki
8
+ fcgi.rb Copyright (C) 2011 saks and Julik Tarkhanov
9
+ fcgi.rb Copyright (C) 2012-2013 mva
8
10
 
9
11
  =end
10
12
  trap('SIGTERM') { exit }
11
13
  trap('SIGPIPE','IGNORE')
12
14
 
13
15
  begin
14
- raise LoadError if defined?(FCGI_PURE_RUBY) && FCGI_PURE_RUBY
16
+ raise LoadError if ENV["USE_PURE_RUBY_FCGI"]
15
17
  require "fcgi.so"
16
- rescue LoadError
18
+ rescue LoadError # Load the pure ruby version instead
19
+ # At this point we do have STDERR so put it to some good use
20
+ $stderr.puts "Your FCGI gem does not contain the FCGI shared library, running pure ruby instead"
21
+
17
22
  require 'socket'
18
23
  require 'stringio'
19
-
24
+
20
25
  class FCGI
21
-
22
- def self::is_cgi?
26
+
27
+ def self.is_cgi?
23
28
  begin
24
29
  s = Socket.for_fd($stdin.fileno)
25
30
  s.getpeername
@@ -31,21 +36,21 @@ rescue LoadError
31
36
  end
32
37
  end
33
38
 
34
- def self::each(&block)
39
+ def self.each(&block)
35
40
  f = default_connection()
36
41
  Server.new(f).each_request(&block)
37
42
  ensure
38
43
  f.close if f
39
44
  end
40
45
 
41
- def self::each_request(&block)
46
+ def self.each_request(&block)
42
47
  f = default_connection()
43
48
  Server.new(f).each_request(&block)
44
49
  ensure
45
50
  f.close if f
46
51
  end
47
52
 
48
- def self::default_connection
53
+ def self.default_connection
49
54
  ::Socket.for_fd($stdin.fileno)
50
55
  end
51
56
 
@@ -306,11 +311,11 @@ rescue LoadError
306
311
  HEADER_FORMAT = 'CCnnCC'
307
312
  HEADER_LENGTH = 8
308
313
 
309
- def self::parse_header(buf)
314
+ def self.parse_header(buf)
310
315
  return *buf.unpack(HEADER_FORMAT)
311
316
  end
312
317
 
313
- def self::class_for(type)
318
+ def self.class_for(type)
314
319
  RECORD_CLASS[type]
315
320
  end
316
321
 
@@ -385,7 +390,7 @@ rescue LoadError
385
390
  # uint8_t reserved[3];
386
391
  BODY_FORMAT = 'NCC3'
387
392
 
388
- def self::parse(id, body)
393
+ def self.parse(id, body)
389
394
  appstatus, protostatus, *reserved = *body.unpack(BODY_FORMAT)
390
395
  new(id, appstatus, protostatus)
391
396
  end
@@ -411,7 +416,7 @@ rescue LoadError
411
416
  # uint8_t reserved[7];
412
417
  BODY_FORMAT = 'CC7'
413
418
 
414
- def self::parse(id, body)
419
+ def self.parse(id, body)
415
420
  type, *reserved = *body.unpack(BODY_FORMAT)
416
421
  new(id, type)
417
422
  end
@@ -431,11 +436,11 @@ rescue LoadError
431
436
  end
432
437
 
433
438
  class ValuesRecord < Record
434
- def self::parse(id, body)
439
+ def self.parse(id, body)
435
440
  new(id, parse_values(body))
436
441
  end
437
442
 
438
- def self::parse_values(buf)
443
+ def self.parse_values(buf)
439
444
  result = {}
440
445
  until buf.empty?
441
446
  name, value = *read_pair(buf)
@@ -444,16 +449,28 @@ rescue LoadError
444
449
  result
445
450
  end
446
451
 
447
- def self::read_pair(buf)
452
+ def self.read_pair(buf)
448
453
  nlen = read_length(buf)
449
454
  vlen = read_length(buf)
450
- return buf.slice!(0, nlen), buf.slice!(0, vlen)
455
+ [buf.slice!(0, nlen), buf.slice!(0, vlen)]
451
456
  end
452
457
 
453
- def self::read_length(buf)
454
- if buf[0] >> 7 == 0
455
- then buf.slice!(0,1)[0]
456
- else buf.slice!(0,4).unpack('N')[0] & ((1<<31) - 1)
458
+
459
+ if "".respond_to?(:bytes) # Ruby 1.9 string semantics
460
+ def self.read_length(buf)
461
+ if buf[0].bytes.first >> 7 == 0
462
+ buf.slice!(0,1)[0].bytes.first
463
+ else
464
+ buf.slice!(0,4).unpack('N')[0] & ((1<<31) - 1)
465
+ end
466
+ end
467
+ else # Ruby 1.8 string
468
+ def self.read_length(buf)
469
+ if buf[0] >> 7 == 0
470
+ buf.slice!(0,1)[0].bytes.first
471
+ else
472
+ buf.slice!(0,4).unpack('N')[0] & ((1<<31) - 1)
473
+ end
457
474
  end
458
475
  end
459
476
 
@@ -502,7 +519,7 @@ rescue LoadError
502
519
  end
503
520
 
504
521
  class GenericDataRecord < Record
505
- def self::parse(id, body)
522
+ def self.parse(id, body)
506
523
  new(id, body)
507
524
  end
508
525
 
@@ -520,7 +537,11 @@ rescue LoadError
520
537
  private
521
538
 
522
539
  def make_body
523
- @flagment
540
+ if @flagment.respond_to? 'force_encoding' then
541
+ return @flagment.dup.force_encoding('BINARY')
542
+ else
543
+ return @flagment
544
+ end
524
545
  end
525
546
  end
526
547
 
@@ -564,13 +585,13 @@ end # begin
564
585
  # are defined within module 'CGI', even if you have subclassed it
565
586
 
566
587
  class FCGI
567
- def self::each_cgi(*args)
588
+ def self.each_cgi(*args)
568
589
  require 'cgi'
569
590
 
570
591
  eval(<<-EOS,TOPLEVEL_BINDING)
571
592
  class CGI
572
593
  public :env_table
573
- def self::remove_params
594
+ def self.remove_params
574
595
  if (const_defined?(:CGI_PARAMS))
575
596
  remove_const(:CGI_PARAMS)
576
597
  remove_const(:CGI_COOKIES)
@@ -606,13 +627,14 @@ class FCGI
606
627
  yield ::CGI.new(*args)
607
628
  else
608
629
  exit_requested = false
609
- FCGI::each {|request|
630
+ FCGI::each do |request|
631
+
610
632
  $stdout, $stderr = request.out, request.err
611
-
633
+
612
634
  yield CGI.new(request, *args)
613
635
 
614
636
  request.finish
615
- }
637
+ end
616
638
  end
617
639
  end
618
640
  end
@@ -0,0 +1,9 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+
4
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
5
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
+ require 'fcgi'
7
+
8
+ class Test::Unit::TestCase
9
+ end
@@ -0,0 +1,7 @@
1
+ require 'helper'
2
+
3
+ class TestFcgi < Test::Unit::TestCase
4
+ def test_something_for_real
5
+ flunk "hey buddy, you should probably rename this file and start testing for real"
6
+ end
7
+ end
metadata CHANGED
@@ -1,55 +1,66 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: fcgi
3
- version: !ruby/object:Gem::Version
4
- version: 0.8.8
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.1
5
+ prerelease:
5
6
  platform: ruby
6
- authors: []
7
-
8
- autorequire: fcgi
7
+ authors:
8
+ - mva
9
+ autorequire:
9
10
  bindir: bin
10
- cert_chain:
11
- date: 2009-11-13 07:23:00 -05:00
12
- default_executable:
11
+ cert_chain: []
12
+ date: 2013-02-20 00:00:00.000000000 Z
13
13
  dependencies: []
14
-
15
- description: FastCGI is a language independent, scalable, open extension to CGI that provides high performance without the limitations of server specific APIs. For more information, see http://www.fastcgi.com/.
16
- email:
14
+ description: FastCGI is a language independent, scalable, open extension to CGI that
15
+ provides high performance without the limitations of server specific APIs. This
16
+ version aims to be compatible with both 1.8.x and 1.9.x versions of Ruby, and also
17
+ will be ported to 2.0.x.
18
+ email: mva@mva.name
17
19
  executables: []
18
-
19
- extensions:
20
+ extensions:
20
21
  - ext/fcgi/extconf.rb
21
- extra_rdoc_files: []
22
-
23
- files:
24
- - lib/fcgi.rb
22
+ extra_rdoc_files:
23
+ - LICENSE
24
+ - README.rdoc
25
+ - README.signals
26
+ files:
27
+ - VERSION
28
+ - ext/fcgi/MANIFEST
29
+ - ext/fcgi/Makefile
25
30
  - ext/fcgi/extconf.rb
26
31
  - ext/fcgi/fcgi.c
27
- - ext/fcgi/MANIFEST
28
- - ChangeLog
29
- - README
32
+ - lib/fcgi.rb
33
+ - fcgi.gemspec
34
+ - LICENSE
35
+ - README.rdoc
30
36
  - README.signals
31
- has_rdoc: false
32
- homepage:
37
+ - test/helper.rb
38
+ - test/test_fcgi.rb
39
+ homepage: http://github.com/alphallc/ruby-fcgi-ng
33
40
  licenses: []
34
-
35
41
  post_install_message:
36
- rdoc_options: []
37
-
38
- require_paths:
42
+ rdoc_options:
43
+ - --charset=UTF-8
44
+ require_paths:
39
45
  - lib
40
- required_ruby_version: !ruby/object:Gem::Requirement
41
- requirements:
42
- - - ">"
43
- - !ruby/object:Gem::Version
44
- version: 0.0.0
45
- version:
46
- required_rubygems_version:
46
+ required_ruby_version: !ruby/object:Gem::Requirement
47
+ none: false
48
+ requirements:
49
+ - - ! '>='
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ required_rubygems_version: !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ! '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
47
58
  requirements: []
48
-
49
- rubyforge_project: fcgi
50
- rubygems_version: 1.3.5
59
+ rubyforge_project:
60
+ rubygems_version: 1.8.24
51
61
  signing_key:
52
- specification_version: 1
62
+ specification_version: 3
53
63
  summary: FastCGI library for Ruby.
54
- test_files: []
55
-
64
+ test_files:
65
+ - test/helper.rb
66
+ - test/test_fcgi.rb
data/ChangeLog DELETED
@@ -1,30 +0,0 @@
1
- Sun Jun 25 12:46:14 JST 2006 moonwolf@moonwolf.com
2
- * patch from http://www.kbmj.com/tech/index.php?itemid=26
3
- * patch from http://sean.treadway.info/articles/2005/12/24/open-season-for-eagain
4
-
5
- Fri Apr 1 10:20:14 JST 2005 sugi@nemui.org
6
- * Include errno.h
7
-
8
- Fri Apr 1 08:09:13 JST 2005 aredridel@nbtsc.org
9
- * Report actual errors
10
-
11
- Adds reporting of errors fcgi experiences. Credit to David Heinemier Hansson
12
- for discovery.
13
-
14
- Fri Apr 1 08:08:07 JST 2005 aredridel@nbtsc.org
15
- * FHS Include Paths
16
-
17
- Wed Mar 30 21:45:11 JST 2005 sugi@nemui.org
18
- * 16k+request-memleak
19
- fix memory leak when 16k+/reqest.
20
- from http://enigo.com/projects/iowa/fcgipatch.html
21
-
22
- Wed Mar 30 21:43:02 JST 2005 sugi@nemui.org
23
- * fix-check_stream_error
24
- Simple fix in CHECK_STREAM_ERROR for Potential DoS
25
- see http://groups-beta.google.com/group/comp.lang.ruby/browse_thread/thread/f51e79974a454b70/54fe207411e9eb05
26
- for details.
27
-
28
- Wed Mar 30 21:40:22 JST 2005 sugi@nemui.org
29
- * init-from-0.8.5
30
- Initalize DARCS repository from MoonWolf's 0.8.5 release.