rhebok 0.0.7 → 0.0.8

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f7b4d1269e51f01608ce10b664cbac7a48ab183
4
- data.tar.gz: 63d4f869951c560a78b4878744b939e8ee40004c
3
+ metadata.gz: 9355b53eeddf987a2aa824aa639eb3fd6f4fcc22
4
+ data.tar.gz: 0a041cb2ebfc3daf54af50f1eccb639868c3d9a8
5
5
  SHA512:
6
- metadata.gz: f1954f4c61f6f593af6d057d799d1c0568c7d978e21eb72fd0c90cba4effa0c4d12c6d2273e69dd2ebe87c9d29610b9af4c9a285175120ea5c41a5a95706d705
7
- data.tar.gz: 9fe22db2f5b0e3f311b6321f28325d3f60dbba146c2d4873f338c165c13c4b582df97c693392bfc0aabbb17c3b38f3f25175e1ff1e5845e33ec26b79cf5c27e2
6
+ metadata.gz: cb9728ed0b511498d9c7adc8b60fb6c296754e8e430a2199d7f9491305d7fdd5acaed15fe2c52f2893ef40311dc2ad91bf8a4c8d53f6f94c2f7a05a4b755689a
7
+ data.tar.gz: cf23b2c70f18c728b01b10781136800e3c753033bb9627af91bc43dc9f301decb6bf834910370ce699291d8b7aed221db60625652986846924d3ac42ef08fd04
data/Changes CHANGED
@@ -1,3 +1,8 @@
1
+ 0.0.8 2014-12-25T15:23:41Z
2
+
3
+ - tweek Header order
4
+ - require ruby >= 2.0
5
+
1
6
  0.0.7 2014-12-24T16:25:22Z
2
7
 
3
8
  - support unix domain socket directly
data/README.md CHANGED
@@ -1,7 +1,5 @@
1
1
  # Rhebok
2
2
 
3
- This project is still in a very early development stage. IT IS NOT READY FOR PRODUCTION!
4
-
5
3
  Rhebok is High Performance Rack Handler/Web Server. 2x performance when compared against Unicorn.
6
4
 
7
5
  Rhebok supports following features.
@@ -677,6 +677,7 @@ VALUE rhe_write_response(VALUE self, VALUE filenov, VALUE timeoutv, VALUE status
677
677
  int i;
678
678
  char status_line[512];
679
679
  char date_line[512];
680
+ char server_line[1032];
680
681
  int date_pushed = 0;
681
682
  VALUE harr;
682
683
  VALUE key_obj;
@@ -685,6 +686,10 @@ VALUE rhe_write_response(VALUE self, VALUE filenov, VALUE timeoutv, VALUE status
685
686
  ssize_t key_len;
686
687
  const char * message;
687
688
 
689
+ const char * s;
690
+ char* d;
691
+ ssize_t n;
692
+
688
693
  int fileno = NUM2INT(filenov);
689
694
  double timeout = NUM2DBL(timeoutv);
690
695
  int status_code = NUM2INT(status_codev);
@@ -720,8 +725,11 @@ VALUE rhe_write_response(VALUE self, VALUE filenov, VALUE timeoutv, VALUE status
720
725
  v[iovcnt].iov_len = i;
721
726
  iovcnt++;
722
727
 
723
- v[iovcnt].iov_base = "Connection: close\r\nServer: Rhebok\r\n";
724
- v[iovcnt].iov_len = sizeof("Connection: close\r\nServer: Rhebok\r\n")-1;
728
+ /* for date header */
729
+ iovcnt++;
730
+
731
+ v[iovcnt].iov_base = "Server: Rhebok\r\n";
732
+ v[iovcnt].iov_len = sizeof("Server: Rhebok\r\n")-1;
725
733
  iovcnt++;
726
734
 
727
735
  date_pushed = 0;
@@ -729,16 +737,38 @@ VALUE rhe_write_response(VALUE self, VALUE filenov, VALUE timeoutv, VALUE status
729
737
  key_obj = rb_ary_entry(harr, i);
730
738
  key = RSTRING_PTR(key_obj);
731
739
  key_len = RSTRING_LEN(key_obj);
740
+ i++;
741
+
732
742
  if ( strncasecmp(key,"Connection",key_len) == 0 ) {
733
- i++;
734
743
  continue;
735
744
  }
736
- if ( strncasecmp(key,"Server",key_len) == 0 ) {
737
- v[1].iov_len -= (sizeof("Server: Rhebok\r\n") - 1);
738
- }
745
+
746
+ val_obj = rb_ary_entry(harr, i);
747
+
739
748
  if ( strncasecmp(key,"Date",key_len) == 0 ) {
749
+ strcpy(date_line, "Date: ");
750
+ for ( s=RSTRING_PTR(val_obj), n = RSTRING_LEN(val_obj), d=date_line+sizeof("Date: ")-1; n !=0; s++, --n, d++) {
751
+ *d = *s;
752
+ }
753
+ date_line[sizeof("Date: ") -1 + RSTRING_LEN(val_obj)] = 13;
754
+ date_line[sizeof("Date: ") -1 + RSTRING_LEN(val_obj) + 1] = 10;
755
+ v[1].iov_base = date_line;
756
+ v[1].iov_len = sizeof("Date: ") -1 + RSTRING_LEN(val_obj) + 2;
740
757
  date_pushed = 1;
758
+ continue;
741
759
  }
760
+ if ( strncasecmp(key,"Server",key_len) == 0 ) {
761
+ strcpy(server_line, "Server: ");
762
+ for ( s=RSTRING_PTR(val_obj), n = RSTRING_LEN(val_obj), d=server_line+sizeof("Server: ")-1; n !=0; s++, --n, d++) {
763
+ *d = *s;
764
+ }
765
+ server_line[sizeof("Server: ") -1 + RSTRING_LEN(val_obj)] = 13;
766
+ server_line[sizeof("Server: ") -1 + RSTRING_LEN(val_obj) + 1] = 10;
767
+ v[2].iov_base = server_line;
768
+ v[2].iov_len = sizeof("Server: ") -1 + RSTRING_LEN(val_obj) + 2;
769
+ continue;
770
+ }
771
+
742
772
  v[iovcnt].iov_base = key;
743
773
  v[iovcnt].iov_len = key_len;
744
774
  iovcnt++;
@@ -747,8 +777,6 @@ VALUE rhe_write_response(VALUE self, VALUE filenov, VALUE timeoutv, VALUE status
747
777
  iovcnt++;
748
778
 
749
779
  /* value */
750
- i++;
751
- val_obj = rb_ary_entry(harr, i);
752
780
  v[iovcnt].iov_base = RSTRING_PTR(val_obj);
753
781
  v[iovcnt].iov_len = RSTRING_LEN(val_obj);
754
782
  iovcnt++;
@@ -758,13 +786,12 @@ VALUE rhe_write_response(VALUE self, VALUE filenov, VALUE timeoutv, VALUE status
758
786
  }
759
787
 
760
788
  if ( date_pushed == 0 ) {
761
- v[iovcnt].iov_len = _date_line(date_line);
762
- v[iovcnt].iov_base = date_line;
763
- iovcnt++;
789
+ v[1].iov_len = _date_line(date_line);
790
+ v[1].iov_base = date_line;
764
791
  }
765
792
 
766
- v[iovcnt].iov_base = "\r\n";
767
- v[iovcnt].iov_len = sizeof("\r\n") - 1;
793
+ v[iovcnt].iov_base = "Connection: close\r\n\r\n";
794
+ v[iovcnt].iov_len = sizeof("Connection: close\r\n\r\n") - 1;
768
795
  iovcnt++;
769
796
 
770
797
  for ( i=0; i<blen; i++) {
@@ -1,3 +1,3 @@
1
1
  class Rhebok
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ["lib"]
21
21
 
22
+ spec.required_ruby_version = '>= 2.0'
22
23
  spec.add_development_dependency "bundler", "~> 1.7"
23
24
  spec.add_development_dependency "rake", "~> 10.0"
24
25
  spec.add_development_dependency "bacon"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rhebok
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masahiro Nagano
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-24 00:00:00.000000000 Z
11
+ date: 2014-12-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -127,7 +127,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - ">="
129
129
  - !ruby/object:Gem::Version
130
- version: '0'
130
+ version: '2.0'
131
131
  required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  requirements:
133
133
  - - ">="