rfuzz 0.7 → 0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. data/Rakefile +1 -1
  2. data/doc/rdoc/classes/RFuzz/Browser.html +15 -15
  3. data/doc/rdoc/classes/RFuzz/Browser.src/{M000068.html → M000083.html} +0 -0
  4. data/doc/rdoc/classes/RFuzz/Browser.src/{M000069.html → M000084.html} +0 -0
  5. data/doc/rdoc/classes/RFuzz/Browser.src/{M000070.html → M000085.html} +0 -0
  6. data/doc/rdoc/classes/RFuzz/HttpClient.html +114 -57
  7. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000019.html +12 -13
  8. data/doc/rdoc/classes/RFuzz/HttpClient.src/{M000011.html → M000020.html} +20 -20
  9. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000021.html +28 -0
  10. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000022.html +30 -0
  11. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000023.html +35 -0
  12. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000024.html +22 -0
  13. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000025.html +44 -0
  14. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000026.html +38 -0
  15. data/doc/rdoc/classes/RFuzz/HttpClient.src/{M000016.html → M000027.html} +12 -12
  16. data/doc/rdoc/classes/RFuzz/HttpClient.src/{M000017.html → M000028.html} +20 -20
  17. data/doc/rdoc/classes/RFuzz/HttpClient.src/{M000018.html → M000029.html} +4 -4
  18. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000030.html +26 -0
  19. data/doc/rdoc/classes/RFuzz/HttpClientError.html +118 -0
  20. data/doc/rdoc/classes/RFuzz/HttpEncoding.html +7 -4
  21. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000001.html +12 -12
  22. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000002.html +4 -4
  23. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000003.html +12 -12
  24. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000004.html +4 -4
  25. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000005.html +18 -18
  26. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000006.html +4 -4
  27. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000007.html +6 -6
  28. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000008.html +6 -6
  29. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000009.html +18 -18
  30. data/doc/rdoc/classes/RFuzz/HttpResponse.html +74 -13
  31. data/doc/rdoc/classes/RFuzz/HttpResponse.src/M000031.html +22 -0
  32. data/doc/rdoc/classes/RFuzz/HttpResponse.src/M000032.html +18 -0
  33. data/doc/rdoc/classes/RFuzz/HttpResponse.src/M000033.html +18 -0
  34. data/doc/rdoc/classes/RFuzz/Notifier.html +49 -31
  35. data/doc/rdoc/classes/RFuzz/Notifier.src/{M000044.html → M000058.html} +3 -3
  36. data/doc/rdoc/classes/RFuzz/Notifier.src/{M000045.html → M000059.html} +3 -3
  37. data/doc/rdoc/classes/RFuzz/Notifier.src/{M000047.html → M000060.html} +2 -2
  38. data/doc/rdoc/classes/RFuzz/Notifier.src/{M000048.html → M000061.html} +2 -2
  39. data/doc/rdoc/classes/RFuzz/Notifier.src/{M000049.html → M000062.html} +2 -2
  40. data/doc/rdoc/classes/RFuzz/Notifier.src/{M000046.html → M000063.html} +4 -4
  41. data/doc/rdoc/classes/RFuzz/Notifier.src/M000064.html +17 -0
  42. data/doc/rdoc/classes/RFuzz/PushBackIO.html +296 -0
  43. data/doc/rdoc/classes/RFuzz/PushBackIO.src/M000010.html +19 -0
  44. data/doc/rdoc/classes/RFuzz/PushBackIO.src/M000011.html +20 -0
  45. data/doc/rdoc/classes/RFuzz/PushBackIO.src/M000012.html +19 -0
  46. data/doc/rdoc/classes/RFuzz/PushBackIO.src/M000013.html +18 -0
  47. data/doc/rdoc/classes/RFuzz/PushBackIO.src/M000014.html +44 -0
  48. data/doc/rdoc/classes/RFuzz/PushBackIO.src/M000015.html +18 -0
  49. data/doc/rdoc/classes/RFuzz/PushBackIO.src/M000016.html +18 -0
  50. data/doc/rdoc/classes/RFuzz/PushBackIO.src/M000017.html +18 -0
  51. data/doc/rdoc/classes/RFuzz/PushBackIO.src/M000018.html +22 -0
  52. data/doc/rdoc/classes/RFuzz/RandomGenerator.html +62 -62
  53. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/{M000032.html → M000046.html} +0 -0
  54. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/{M000033.html → M000047.html} +0 -0
  55. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/{M000036.html → M000050.html} +0 -0
  56. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/{M000037.html → M000051.html} +0 -0
  57. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/{M000038.html → M000052.html} +0 -0
  58. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/{M000039.html → M000053.html} +0 -0
  59. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/{M000040.html → M000054.html} +0 -0
  60. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/{M000041.html → M000055.html} +0 -0
  61. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/{M000042.html → M000056.html} +0 -0
  62. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/{M000043.html → M000057.html} +0 -0
  63. data/doc/rdoc/classes/RFuzz/Sampler.html +60 -60
  64. data/doc/rdoc/classes/RFuzz/Sampler.src/{M000056.html → M000071.html} +0 -0
  65. data/doc/rdoc/classes/RFuzz/Sampler.src/{M000057.html → M000072.html} +0 -0
  66. data/doc/rdoc/classes/RFuzz/Sampler.src/{M000058.html → M000073.html} +0 -0
  67. data/doc/rdoc/classes/RFuzz/Sampler.src/{M000059.html → M000074.html} +0 -0
  68. data/doc/rdoc/classes/RFuzz/Sampler.src/{M000060.html → M000075.html} +0 -0
  69. data/doc/rdoc/classes/RFuzz/Sampler.src/{M000061.html → M000076.html} +0 -0
  70. data/doc/rdoc/classes/RFuzz/Sampler.src/{M000062.html → M000077.html} +0 -0
  71. data/doc/rdoc/classes/RFuzz/Sampler.src/{M000063.html → M000078.html} +0 -0
  72. data/doc/rdoc/classes/RFuzz/Sampler.src/{M000064.html → M000079.html} +0 -0
  73. data/doc/rdoc/classes/RFuzz/Sampler.src/{M000065.html → M000080.html} +0 -0
  74. data/doc/rdoc/classes/RFuzz/Sampler.src/{M000066.html → M000081.html} +0 -0
  75. data/doc/rdoc/classes/RFuzz/Sampler.src/{M000067.html → M000082.html} +0 -0
  76. data/doc/rdoc/classes/RFuzz/Session.html +63 -63
  77. data/doc/rdoc/classes/RFuzz/Session.src/{M000020.html → M000034.html} +0 -0
  78. data/doc/rdoc/classes/RFuzz/Session.src/{M000021.html → M000035.html} +0 -0
  79. data/doc/rdoc/classes/RFuzz/Session.src/{M000022.html → M000036.html} +0 -0
  80. data/doc/rdoc/classes/RFuzz/Session.src/{M000023.html → M000037.html} +0 -0
  81. data/doc/rdoc/classes/RFuzz/Session.src/{M000024.html → M000038.html} +0 -0
  82. data/doc/rdoc/classes/RFuzz/Session.src/{M000025.html → M000039.html} +0 -0
  83. data/doc/rdoc/classes/RFuzz/Session.src/{M000026.html → M000040.html} +0 -0
  84. data/doc/rdoc/classes/RFuzz/Session.src/{M000027.html → M000041.html} +0 -0
  85. data/doc/rdoc/classes/RFuzz/Session.src/{M000028.html → M000042.html} +0 -0
  86. data/doc/rdoc/classes/RFuzz/Session.src/{M000029.html → M000043.html} +0 -0
  87. data/doc/rdoc/classes/RFuzz/Session.src/{M000030.html → M000044.html} +0 -0
  88. data/doc/rdoc/classes/RFuzz/Session.src/{M000031.html → M000045.html} +0 -0
  89. data/doc/rdoc/classes/RFuzz/StatsTracker.html +32 -32
  90. data/doc/rdoc/classes/RFuzz/StatsTracker.src/{M000050.html → M000065.html} +0 -0
  91. data/doc/rdoc/classes/RFuzz/StatsTracker.src/{M000051.html → M000066.html} +0 -0
  92. data/doc/rdoc/classes/RFuzz/StatsTracker.src/{M000052.html → M000067.html} +0 -0
  93. data/doc/rdoc/classes/RFuzz/StatsTracker.src/{M000053.html → M000068.html} +0 -0
  94. data/doc/rdoc/classes/RFuzz/StatsTracker.src/{M000054.html → M000069.html} +0 -0
  95. data/doc/rdoc/classes/RFuzz/StatsTracker.src/{M000055.html → M000070.html} +0 -0
  96. data/doc/rdoc/classes/RFuzz.html +7 -1
  97. data/doc/rdoc/created.rid +1 -1
  98. data/doc/rdoc/files/lib/rfuzz/client_rb.html +2 -2
  99. data/doc/rdoc/files/lib/rfuzz/pushbackio_rb.html +108 -0
  100. data/doc/rdoc/fr_class_index.html +2 -0
  101. data/doc/rdoc/fr_file_index.html +1 -0
  102. data/doc/rdoc/fr_method_index.html +76 -61
  103. data/examples/cl_watcher.rb +12 -9
  104. data/examples/hpricot_pudding.rb +1 -1
  105. data/examples/mongrel_test_suite/test/http/protocol_parameters.rb +0 -3
  106. data/examples/mongrel_test_suite/test/rails/catastrophe.rb +26 -0
  107. data/examples/mongrel_test_suite/test/rails/conditional.rb +81 -0
  108. data/examples/mongrel_test_suite/test/rails/put.rb +25 -0
  109. data/examples/mongrel_test_suite/test/rails/redirect.rb +13 -0
  110. data/examples/mongrel_test_suite/test/rails/static_files.rb +47 -2
  111. data/examples/rails_security_test.rb +61 -0
  112. data/ext/http11_client/http11_client.c +15 -1
  113. data/ext/http11_client/http11_parser.c +627 -203
  114. data/ext/http11_client/http11_parser.h +2 -0
  115. data/ext/http11_client/http11_parser.rl +8 -4
  116. data/lib/rfuzz/client.rb +124 -115
  117. data/lib/rfuzz/pushbackio.rb +90 -0
  118. metadata +86 -60
  119. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000010.html +0 -24
  120. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000012.html +0 -50
  121. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000013.html +0 -49
  122. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000014.html +0 -57
  123. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000015.html +0 -37
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: rfuzz
5
5
  version: !ruby/object:Gem::Version
6
- version: "0.7"
7
- date: 2006-08-04 00:00:00 -07:00
6
+ version: "0.8"
7
+ date: 2006-08-13 00:00:00 -07:00
8
8
  summary: The rfuzz web server destructor
9
9
  require_paths:
10
10
  - lib
@@ -45,6 +45,7 @@ files:
45
45
  - doc/rdoc/files/README.html
46
46
  - doc/rdoc/files/COPYING.html
47
47
  - doc/rdoc/files/lib/rfuzz
48
+ - doc/rdoc/files/lib/rfuzz/pushbackio_rb.html
48
49
  - doc/rdoc/files/lib/rfuzz/browser_rb.html
49
50
  - doc/rdoc/files/lib/rfuzz/rfuzz_rb.html
50
51
  - doc/rdoc/files/lib/rfuzz/client_rb.html
@@ -53,8 +54,10 @@ files:
53
54
  - doc/rdoc/files/lib/rfuzz/random_rb.html
54
55
  - doc/rdoc/classes/RFuzz
55
56
  - doc/rdoc/classes/RFuzz.html
57
+ - doc/rdoc/classes/RFuzz/HttpClientError.html
56
58
  - doc/rdoc/classes/RFuzz/StatsTracker.src
57
59
  - doc/rdoc/classes/RFuzz/HttpEncoding.html
60
+ - doc/rdoc/classes/RFuzz/PushBackIO.html
58
61
  - doc/rdoc/classes/RFuzz/HttpClient.html
59
62
  - doc/rdoc/classes/RFuzz/HttpResponse.html
60
63
  - doc/rdoc/classes/RFuzz/HttpClient.src
@@ -64,28 +67,32 @@ files:
64
67
  - doc/rdoc/classes/RFuzz/Browser.html
65
68
  - doc/rdoc/classes/RFuzz/Sampler.src
66
69
  - doc/rdoc/classes/RFuzz/Session.html
70
+ - doc/rdoc/classes/RFuzz/PushBackIO.src
67
71
  - doc/rdoc/classes/RFuzz/Notifier.html
68
72
  - doc/rdoc/classes/RFuzz/Notifier.src
69
73
  - doc/rdoc/classes/RFuzz/Sampler.html
74
+ - doc/rdoc/classes/RFuzz/HttpResponse.src
70
75
  - doc/rdoc/classes/RFuzz/Browser.src
71
76
  - doc/rdoc/classes/RFuzz/RandomGenerator.html
72
77
  - doc/rdoc/classes/RFuzz/RandomGenerator.src
73
- - doc/rdoc/classes/RFuzz/StatsTracker.src/M000050.html
74
- - doc/rdoc/classes/RFuzz/StatsTracker.src/M000051.html
75
- - doc/rdoc/classes/RFuzz/StatsTracker.src/M000052.html
76
- - doc/rdoc/classes/RFuzz/StatsTracker.src/M000053.html
77
- - doc/rdoc/classes/RFuzz/StatsTracker.src/M000054.html
78
- - doc/rdoc/classes/RFuzz/StatsTracker.src/M000055.html
79
- - doc/rdoc/classes/RFuzz/HttpClient.src/M000010.html
80
- - doc/rdoc/classes/RFuzz/HttpClient.src/M000011.html
81
- - doc/rdoc/classes/RFuzz/HttpClient.src/M000012.html
82
- - doc/rdoc/classes/RFuzz/HttpClient.src/M000013.html
83
- - doc/rdoc/classes/RFuzz/HttpClient.src/M000014.html
84
- - doc/rdoc/classes/RFuzz/HttpClient.src/M000015.html
85
- - doc/rdoc/classes/RFuzz/HttpClient.src/M000016.html
86
- - doc/rdoc/classes/RFuzz/HttpClient.src/M000017.html
87
- - doc/rdoc/classes/RFuzz/HttpClient.src/M000018.html
78
+ - doc/rdoc/classes/RFuzz/StatsTracker.src/M000065.html
79
+ - doc/rdoc/classes/RFuzz/StatsTracker.src/M000066.html
80
+ - doc/rdoc/classes/RFuzz/StatsTracker.src/M000067.html
81
+ - doc/rdoc/classes/RFuzz/StatsTracker.src/M000068.html
82
+ - doc/rdoc/classes/RFuzz/StatsTracker.src/M000069.html
83
+ - doc/rdoc/classes/RFuzz/StatsTracker.src/M000070.html
88
84
  - doc/rdoc/classes/RFuzz/HttpClient.src/M000019.html
85
+ - doc/rdoc/classes/RFuzz/HttpClient.src/M000020.html
86
+ - doc/rdoc/classes/RFuzz/HttpClient.src/M000021.html
87
+ - doc/rdoc/classes/RFuzz/HttpClient.src/M000022.html
88
+ - doc/rdoc/classes/RFuzz/HttpClient.src/M000023.html
89
+ - doc/rdoc/classes/RFuzz/HttpClient.src/M000024.html
90
+ - doc/rdoc/classes/RFuzz/HttpClient.src/M000025.html
91
+ - doc/rdoc/classes/RFuzz/HttpClient.src/M000026.html
92
+ - doc/rdoc/classes/RFuzz/HttpClient.src/M000027.html
93
+ - doc/rdoc/classes/RFuzz/HttpClient.src/M000028.html
94
+ - doc/rdoc/classes/RFuzz/HttpClient.src/M000029.html
95
+ - doc/rdoc/classes/RFuzz/HttpClient.src/M000030.html
89
96
  - doc/rdoc/classes/RFuzz/HttpEncoding.src/M000008.html
90
97
  - doc/rdoc/classes/RFuzz/HttpEncoding.src/M000009.html
91
98
  - doc/rdoc/classes/RFuzz/HttpEncoding.src/M000001.html
@@ -95,49 +102,62 @@ files:
95
102
  - doc/rdoc/classes/RFuzz/HttpEncoding.src/M000005.html
96
103
  - doc/rdoc/classes/RFuzz/HttpEncoding.src/M000006.html
97
104
  - doc/rdoc/classes/RFuzz/HttpEncoding.src/M000007.html
98
- - doc/rdoc/classes/RFuzz/Session.src/M000020.html
99
- - doc/rdoc/classes/RFuzz/Session.src/M000021.html
100
- - doc/rdoc/classes/RFuzz/Session.src/M000022.html
101
- - doc/rdoc/classes/RFuzz/Session.src/M000023.html
102
- - doc/rdoc/classes/RFuzz/Session.src/M000024.html
103
- - doc/rdoc/classes/RFuzz/Session.src/M000025.html
104
- - doc/rdoc/classes/RFuzz/Session.src/M000026.html
105
- - doc/rdoc/classes/RFuzz/Session.src/M000027.html
106
- - doc/rdoc/classes/RFuzz/Session.src/M000028.html
107
- - doc/rdoc/classes/RFuzz/Session.src/M000029.html
108
- - doc/rdoc/classes/RFuzz/Session.src/M000030.html
109
- - doc/rdoc/classes/RFuzz/Session.src/M000031.html
110
- - doc/rdoc/classes/RFuzz/Sampler.src/M000056.html
111
- - doc/rdoc/classes/RFuzz/Sampler.src/M000057.html
112
- - doc/rdoc/classes/RFuzz/Sampler.src/M000058.html
113
- - doc/rdoc/classes/RFuzz/Sampler.src/M000059.html
114
- - doc/rdoc/classes/RFuzz/Sampler.src/M000060.html
115
- - doc/rdoc/classes/RFuzz/Sampler.src/M000061.html
116
- - doc/rdoc/classes/RFuzz/Sampler.src/M000062.html
117
- - doc/rdoc/classes/RFuzz/Sampler.src/M000063.html
118
- - doc/rdoc/classes/RFuzz/Sampler.src/M000064.html
119
- - doc/rdoc/classes/RFuzz/Sampler.src/M000065.html
120
- - doc/rdoc/classes/RFuzz/Sampler.src/M000066.html
121
- - doc/rdoc/classes/RFuzz/Sampler.src/M000067.html
122
- - doc/rdoc/classes/RFuzz/Notifier.src/M000044.html
123
- - doc/rdoc/classes/RFuzz/Notifier.src/M000045.html
124
- - doc/rdoc/classes/RFuzz/Notifier.src/M000046.html
125
- - doc/rdoc/classes/RFuzz/Notifier.src/M000047.html
126
- - doc/rdoc/classes/RFuzz/Notifier.src/M000048.html
127
- - doc/rdoc/classes/RFuzz/Notifier.src/M000049.html
128
- - doc/rdoc/classes/RFuzz/Browser.src/M000068.html
129
- - doc/rdoc/classes/RFuzz/Browser.src/M000069.html
130
- - doc/rdoc/classes/RFuzz/Browser.src/M000070.html
131
- - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000032.html
132
- - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000033.html
133
- - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000036.html
134
- - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000037.html
135
- - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000038.html
136
- - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000039.html
137
- - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000040.html
138
- - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000041.html
139
- - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000042.html
140
- - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000043.html
105
+ - doc/rdoc/classes/RFuzz/Session.src/M000034.html
106
+ - doc/rdoc/classes/RFuzz/Session.src/M000035.html
107
+ - doc/rdoc/classes/RFuzz/Session.src/M000036.html
108
+ - doc/rdoc/classes/RFuzz/Session.src/M000037.html
109
+ - doc/rdoc/classes/RFuzz/Session.src/M000038.html
110
+ - doc/rdoc/classes/RFuzz/Session.src/M000039.html
111
+ - doc/rdoc/classes/RFuzz/Session.src/M000040.html
112
+ - doc/rdoc/classes/RFuzz/Session.src/M000041.html
113
+ - doc/rdoc/classes/RFuzz/Session.src/M000042.html
114
+ - doc/rdoc/classes/RFuzz/Session.src/M000043.html
115
+ - doc/rdoc/classes/RFuzz/Session.src/M000044.html
116
+ - doc/rdoc/classes/RFuzz/Session.src/M000045.html
117
+ - doc/rdoc/classes/RFuzz/Sampler.src/M000076.html
118
+ - doc/rdoc/classes/RFuzz/Sampler.src/M000077.html
119
+ - doc/rdoc/classes/RFuzz/Sampler.src/M000078.html
120
+ - doc/rdoc/classes/RFuzz/Sampler.src/M000079.html
121
+ - doc/rdoc/classes/RFuzz/Sampler.src/M000080.html
122
+ - doc/rdoc/classes/RFuzz/Sampler.src/M000081.html
123
+ - doc/rdoc/classes/RFuzz/Sampler.src/M000082.html
124
+ - doc/rdoc/classes/RFuzz/Sampler.src/M000071.html
125
+ - doc/rdoc/classes/RFuzz/Sampler.src/M000072.html
126
+ - doc/rdoc/classes/RFuzz/Sampler.src/M000073.html
127
+ - doc/rdoc/classes/RFuzz/Sampler.src/M000074.html
128
+ - doc/rdoc/classes/RFuzz/Sampler.src/M000075.html
129
+ - doc/rdoc/classes/RFuzz/PushBackIO.src/M000010.html
130
+ - doc/rdoc/classes/RFuzz/PushBackIO.src/M000011.html
131
+ - doc/rdoc/classes/RFuzz/PushBackIO.src/M000012.html
132
+ - doc/rdoc/classes/RFuzz/PushBackIO.src/M000013.html
133
+ - doc/rdoc/classes/RFuzz/PushBackIO.src/M000014.html
134
+ - doc/rdoc/classes/RFuzz/PushBackIO.src/M000015.html
135
+ - doc/rdoc/classes/RFuzz/PushBackIO.src/M000016.html
136
+ - doc/rdoc/classes/RFuzz/PushBackIO.src/M000017.html
137
+ - doc/rdoc/classes/RFuzz/PushBackIO.src/M000018.html
138
+ - doc/rdoc/classes/RFuzz/Notifier.src/M000058.html
139
+ - doc/rdoc/classes/RFuzz/Notifier.src/M000059.html
140
+ - doc/rdoc/classes/RFuzz/Notifier.src/M000060.html
141
+ - doc/rdoc/classes/RFuzz/Notifier.src/M000061.html
142
+ - doc/rdoc/classes/RFuzz/Notifier.src/M000062.html
143
+ - doc/rdoc/classes/RFuzz/Notifier.src/M000063.html
144
+ - doc/rdoc/classes/RFuzz/Notifier.src/M000064.html
145
+ - doc/rdoc/classes/RFuzz/HttpResponse.src/M000031.html
146
+ - doc/rdoc/classes/RFuzz/HttpResponse.src/M000032.html
147
+ - doc/rdoc/classes/RFuzz/HttpResponse.src/M000033.html
148
+ - doc/rdoc/classes/RFuzz/Browser.src/M000083.html
149
+ - doc/rdoc/classes/RFuzz/Browser.src/M000084.html
150
+ - doc/rdoc/classes/RFuzz/Browser.src/M000085.html
151
+ - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000046.html
152
+ - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000047.html
153
+ - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000050.html
154
+ - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000051.html
155
+ - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000052.html
156
+ - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000053.html
157
+ - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000054.html
158
+ - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000055.html
159
+ - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000056.html
160
+ - doc/rdoc/classes/RFuzz/RandomGenerator.src/M000057.html
141
161
  - ext/http11_client/http11_parser.h
142
162
  - ext/http11_client/ext_help.h
143
163
  - ext/fuzzrnd/ext_help.h
@@ -146,6 +166,7 @@ files:
146
166
  - ext/fuzzrnd/fuzzrnd.c
147
167
  - ext/http11_client/extconf.rb
148
168
  - ext/fuzzrnd/extconf.rb
169
+ - examples/rails_security_test.rb
149
170
  - examples/cl_watcher.rb
150
171
  - examples/kill_routes.rb
151
172
  - examples/perftest.rb
@@ -169,8 +190,12 @@ files:
169
190
  - examples/mongrel_test_suite/test/http/connections.rb
170
191
  - examples/mongrel_test_suite/test/nitro/upload_file.rb
171
192
  - examples/mongrel_test_suite/test/nitro/upload_progress.rb
193
+ - examples/mongrel_test_suite/test/rails/catastrophe.rb
172
194
  - examples/mongrel_test_suite/test/rails/upload_file.rb
195
+ - examples/mongrel_test_suite/test/rails/redirect.rb
196
+ - examples/mongrel_test_suite/test/rails/conditional.rb
173
197
  - examples/mongrel_test_suite/test/rails/static_files.rb
198
+ - examples/mongrel_test_suite/test/rails/put.rb
174
199
  - examples/mongrel_test_suite/test/rails/upload_progress.rb
175
200
  - examples/mongrel_test_suite/test/camping/upload_file.rb
176
201
  - examples/mongrel_test_suite/test/camping/static_files.rb
@@ -179,6 +204,7 @@ files:
179
204
  - lib/rfuzz/browser.rb
180
205
  - lib/rfuzz/rfuzz.rb
181
206
  - lib/rfuzz/random.rb
207
+ - lib/rfuzz/pushbackio.rb
182
208
  - lib/rfuzz/client.rb
183
209
  - lib/rfuzz/stats.rb
184
210
  - lib/rfuzz/session.rb
@@ -1,24 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html>
7
- <head>
8
- <title>new (RFuzz::HttpClient)</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
- </head>
12
- <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/rfuzz/client.rb, line 214</span>
14
- 214: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">host</span>, <span class="ruby-identifier">port</span>, <span class="ruby-identifier">options</span> = {})
15
- 215: <span class="ruby-ivar">@options</span> = <span class="ruby-identifier">options</span>
16
- 216: <span class="ruby-ivar">@host</span> = <span class="ruby-identifier">host</span>
17
- 217: <span class="ruby-ivar">@port</span> = <span class="ruby-identifier">port</span>
18
- 218: <span class="ruby-ivar">@cookies</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:cookies</span>] <span class="ruby-operator">||</span> {}
19
- 219: <span class="ruby-ivar">@allowed_methods</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:allowed_methods</span>] <span class="ruby-operator">||</span> [<span class="ruby-identifier">:put</span>, <span class="ruby-identifier">:get</span>, <span class="ruby-identifier">:post</span>, <span class="ruby-identifier">:delete</span>, <span class="ruby-identifier">:head</span>]
20
- 220: <span class="ruby-ivar">@notifier</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:notifier</span>]
21
- 221: <span class="ruby-ivar">@redirect</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:redirect</span>] <span class="ruby-operator">||</span> <span class="ruby-keyword kw">false</span>
22
- 222: <span class="ruby-keyword kw">end</span></pre>
23
- </body>
24
- </html>
@@ -1,50 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html>
7
- <head>
8
- <title>read_chunks (RFuzz::HttpClient)</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
- </head>
12
- <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/rfuzz/client.rb, line 250</span>
14
- 250: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_chunks</span>(<span class="ruby-identifier">input</span>, <span class="ruby-identifier">out</span>, <span class="ruby-identifier">parser</span>)
15
- 251: <span class="ruby-keyword kw">begin</span>
16
- 252: <span class="ruby-keyword kw">until</span> <span class="ruby-identifier">input</span>.<span class="ruby-identifier">closed?</span>
17
- 253: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">reset</span>
18
- 254: <span class="ruby-identifier">chunk</span> = <span class="ruby-constant">HttpResponse</span>.<span class="ruby-identifier">new</span>
19
- 255: <span class="ruby-identifier">line</span> = <span class="ruby-identifier">input</span>.<span class="ruby-identifier">readline</span>(<span class="ruby-value str">&quot;\r\n&quot;</span>)
20
- 256: <span class="ruby-identifier">nread</span> = <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">execute</span>(<span class="ruby-identifier">chunk</span>, <span class="ruby-identifier">line</span>, <span class="ruby-value">0</span>)
21
- 257:
22
- 258: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">parser</span>.<span class="ruby-identifier">finished?</span>
23
- 259: <span class="ruby-comment cmt"># tried to read this header but couldn't</span>
24
- 260: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">:incomplete_header</span>, <span class="ruby-identifier">line</span>
25
- 261: <span class="ruby-keyword kw">end</span>
26
- 262:
27
- 263: <span class="ruby-identifier">size</span> = <span class="ruby-identifier">chunk</span>.<span class="ruby-identifier">http_chunk_size</span> <span class="ruby-value">? </span><span class="ruby-identifier">chunk</span>.<span class="ruby-identifier">http_chunk_size</span>.<span class="ruby-identifier">to_i</span>(<span class="ruby-identifier">base</span>=<span class="ruby-value">16</span>) <span class="ruby-operator">:</span> <span class="ruby-value">0</span>
28
- 264:
29
- 265: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
30
- 266: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">:finished</span>, <span class="ruby-keyword kw">nil</span>
31
- 267: <span class="ruby-keyword kw">end</span>
32
- 268:
33
- 269: <span class="ruby-identifier">remain</span> = <span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">out</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">input</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">size</span>))
34
- 270: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">:incomplete_body</span>, <span class="ruby-identifier">remain</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">remain</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
35
- 271:
36
- 272: <span class="ruby-identifier">line</span> = <span class="ruby-identifier">input</span>.<span class="ruby-identifier">read</span>(<span class="ruby-value">2</span>)
37
- 273: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">2</span>
38
- 274: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">:incomplete_trailer</span>, <span class="ruby-identifier">line</span>
39
- 275: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">line</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;\r\n&quot;</span>
40
- 276: <span class="ruby-identifier">raise</span> <span class="ruby-constant">HttpClientParserError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;invalid chunked encoding trailer&quot;</span>)
41
- 277: <span class="ruby-keyword kw">end</span>
42
- 278: <span class="ruby-keyword kw">end</span>
43
- 279: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">EOFError</span>
44
- 280: <span class="ruby-comment cmt"># this is thrown when the header read is attempted and </span>
45
- 281: <span class="ruby-comment cmt"># there's nothing in the buffer</span>
46
- 282: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">:eof_error</span>, <span class="ruby-keyword kw">nil</span>
47
- 283: <span class="ruby-keyword kw">end</span>
48
- 284: <span class="ruby-keyword kw">end</span></pre>
49
- </body>
50
- </html>
@@ -1,49 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html>
7
- <head>
8
- <title>read_chunked_encoding (RFuzz::HttpClient)</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
- </head>
12
- <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/rfuzz/client.rb, line 286</span>
14
- 286: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_chunked_encoding</span>(<span class="ruby-identifier">resp</span>, <span class="ruby-identifier">sock</span>, <span class="ruby-identifier">parser</span>)
15
- 287: <span class="ruby-identifier">out</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>
16
- 288: <span class="ruby-identifier">input</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">resp</span>.<span class="ruby-identifier">http_body</span>)
17
- 289:
18
- 290: <span class="ruby-comment cmt"># read from the http body first, then continue at the socket</span>
19
- 291: <span class="ruby-identifier">status</span>, <span class="ruby-identifier">result</span> = <span class="ruby-identifier">read_chunks</span>(<span class="ruby-identifier">input</span>, <span class="ruby-identifier">out</span>, <span class="ruby-identifier">parser</span>)
20
- 292:
21
- 293: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">status</span>
22
- 294: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:incomplete_trailer</span>
23
- 295: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">nil?</span>
24
- 296: <span class="ruby-identifier">sock</span>.<span class="ruby-identifier">read</span>(<span class="ruby-value">2</span>)
25
- 297: <span class="ruby-keyword kw">else</span>
26
- 298: <span class="ruby-identifier">sock</span>.<span class="ruby-identifier">read</span>((<span class="ruby-identifier">result</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">2</span>).<span class="ruby-identifier">abs</span>)
27
- 299: <span class="ruby-keyword kw">end</span>
28
- 300: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:incomplete_body</span>
29
- 301: <span class="ruby-identifier">out</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">sock</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">result</span>)) <span class="ruby-comment cmt"># read the remaining</span>
30
- 302: <span class="ruby-identifier">sock</span>.<span class="ruby-identifier">read</span>(<span class="ruby-value">2</span>)
31
- 303: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:incomplete_header</span>
32
- 304: <span class="ruby-comment cmt"># push what we read back onto the socket, but backwards</span>
33
- 305: <span class="ruby-identifier">result</span>.<span class="ruby-identifier">reverse!</span>
34
- 306: <span class="ruby-identifier">result</span>.<span class="ruby-identifier">each_byte</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span> <span class="ruby-identifier">sock</span>.<span class="ruby-identifier">ungetc</span>(<span class="ruby-identifier">b</span>) }
35
- 307: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:finished</span>
36
- 308: <span class="ruby-comment cmt"># all done, get out</span>
37
- 309: <span class="ruby-identifier">out</span>.<span class="ruby-identifier">rewind</span>; <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">out</span>.<span class="ruby-identifier">read</span>
38
- 310: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:eof_error</span>
39
- 311: <span class="ruby-comment cmt"># read everything we could, ignore</span>
40
- 312: <span class="ruby-keyword kw">end</span>
41
- 313:
42
- 314: <span class="ruby-comment cmt"># then continue reading them from the socket</span>
43
- 315: <span class="ruby-identifier">status</span>, <span class="ruby-identifier">result</span> = <span class="ruby-identifier">read_chunks</span>(<span class="ruby-identifier">sock</span>, <span class="ruby-identifier">out</span>, <span class="ruby-identifier">parser</span>)
44
- 316:
45
- 317: <span class="ruby-comment cmt"># and now the http_body is the chunk</span>
46
- 318: <span class="ruby-identifier">out</span>.<span class="ruby-identifier">rewind</span>; <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">out</span>.<span class="ruby-identifier">read</span>
47
- 319: <span class="ruby-keyword kw">end</span></pre>
48
- </body>
49
- </html>
@@ -1,57 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html>
7
- <head>
8
- <title>read_response (RFuzz::HttpClient)</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
- </head>
12
- <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/rfuzz/client.rb, line 328</span>
14
- 328: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_response</span>(<span class="ruby-identifier">sock</span>)
15
- 329: <span class="ruby-identifier">data</span>, <span class="ruby-identifier">resp</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>
16
- 330: <span class="ruby-identifier">parser</span> = <span class="ruby-constant">HttpClientParser</span>.<span class="ruby-identifier">new</span>
17
- 331: <span class="ruby-identifier">resp</span> = <span class="ruby-constant">HttpResponse</span>.<span class="ruby-identifier">new</span>
18
- 332:
19
- 333: <span class="ruby-identifier">notify</span> <span class="ruby-identifier">:read_header</span> <span class="ruby-keyword kw">do</span>
20
- 334: <span class="ruby-identifier">data</span> = <span class="ruby-identifier">sock</span>.<span class="ruby-identifier">readpartial</span>(<span class="ruby-value">1024</span>)
21
- 335: <span class="ruby-identifier">nread</span> = <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">execute</span>(<span class="ruby-identifier">resp</span>, <span class="ruby-identifier">data</span>, <span class="ruby-value">0</span>)
22
- 336:
23
- 337: <span class="ruby-keyword kw">while</span> <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">finished?</span>
24
- 338: <span class="ruby-identifier">data</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sock</span>.<span class="ruby-identifier">readpartial</span>(<span class="ruby-value">1024</span>)
25
- 339: <span class="ruby-identifier">nread</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">execute</span>(<span class="ruby-identifier">resp</span>, <span class="ruby-identifier">data</span>, <span class="ruby-identifier">nread</span>)
26
- 340: <span class="ruby-keyword kw">end</span>
27
- 341: <span class="ruby-keyword kw">end</span>
28
- 342:
29
- 343: <span class="ruby-identifier">notify</span> <span class="ruby-identifier">:read_body</span> <span class="ruby-keyword kw">do</span>
30
- 344: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resp</span>[<span class="ruby-constant">TRANSFER_ENCODING</span>] <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">resp</span>[<span class="ruby-constant">TRANSFER_ENCODING</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value str">&quot;chunked&quot;</span>)
31
- 345: <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">http_body</span> = <span class="ruby-identifier">read_chunked_encoding</span>(<span class="ruby-identifier">resp</span>, <span class="ruby-identifier">sock</span>, <span class="ruby-identifier">parser</span>)
32
- 346: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">resp</span>[<span class="ruby-constant">CONTENT_LENGTH</span>]
33
- 347: <span class="ruby-identifier">cl</span> = <span class="ruby-identifier">resp</span>[<span class="ruby-constant">CONTENT_LENGTH</span>].<span class="ruby-identifier">to_i</span>
34
- 348: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">cl</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">http_body</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
35
- 349: <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">http_body</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sock</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">cl</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">http_body</span>.<span class="ruby-identifier">length</span>)
36
- 350: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">cl</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">http_body</span>.<span class="ruby-identifier">length</span>
37
- 351: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Web site sucks, they said Content-Length: #{cl}, but sent a longer body length: #{resp.http_body.length}&quot;</span>
38
- 352: <span class="ruby-keyword kw">end</span>
39
- 353: <span class="ruby-keyword kw">else</span>
40
- 354: <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">http_body</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sock</span>.<span class="ruby-identifier">read</span>
41
- 355: <span class="ruby-keyword kw">end</span>
42
- 356: <span class="ruby-keyword kw">end</span>
43
- 357:
44
- 358: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resp</span>[<span class="ruby-constant">SET_COOKIE</span>]
45
- 359: <span class="ruby-identifier">cookies</span> = <span class="ruby-identifier">query_parse</span>(<span class="ruby-identifier">resp</span>[<span class="ruby-constant">SET_COOKIE</span>], <span class="ruby-value str">';,'</span>)
46
- 360: <span class="ruby-ivar">@cookies</span>.<span class="ruby-identifier">merge!</span> <span class="ruby-identifier">cookies</span>
47
- 361: <span class="ruby-ivar">@cookies</span>.<span class="ruby-identifier">delete</span> <span class="ruby-value str">&quot;path&quot;</span>
48
- 362: <span class="ruby-keyword kw">end</span>
49
- 363:
50
- 364: <span class="ruby-identifier">notify</span> <span class="ruby-identifier">:close</span> <span class="ruby-keyword kw">do</span>
51
- 365: <span class="ruby-identifier">sock</span>.<span class="ruby-identifier">close</span>
52
- 366: <span class="ruby-keyword kw">end</span>
53
- 367:
54
- 368: <span class="ruby-identifier">resp</span>
55
- 369: <span class="ruby-keyword kw">end</span></pre>
56
- </body>
57
- </html>
@@ -1,37 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html>
7
- <head>
8
- <title>send_request (RFuzz::HttpClient)</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
- </head>
12
- <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/rfuzz/client.rb, line 373</span>
14
- 373: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_request</span>(<span class="ruby-identifier">method</span>, <span class="ruby-identifier">uri</span>, <span class="ruby-identifier">req</span>)
15
- 374: <span class="ruby-keyword kw">begin</span>
16
- 375: <span class="ruby-identifier">sock</span> = <span class="ruby-keyword kw">nil</span>
17
- 376: <span class="ruby-identifier">notify</span> <span class="ruby-identifier">:connect</span> <span class="ruby-keyword kw">do</span>
18
- 377: <span class="ruby-identifier">sock</span> = <span class="ruby-constant">TCPSocket</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@host</span>, <span class="ruby-ivar">@port</span>)
19
- 378: <span class="ruby-keyword kw">end</span>
20
- 379:
21
- 380: <span class="ruby-identifier">out</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>
22
- 381: <span class="ruby-identifier">body</span> = <span class="ruby-identifier">build_request</span>(<span class="ruby-identifier">out</span>, <span class="ruby-identifier">method</span>, <span class="ruby-identifier">uri</span>, <span class="ruby-identifier">req</span>)
23
- 382:
24
- 383: <span class="ruby-identifier">notify</span> <span class="ruby-identifier">:send_request</span> <span class="ruby-keyword kw">do</span>
25
- 384: <span class="ruby-identifier">sock</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">out</span>.<span class="ruby-identifier">string</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">body</span>)
26
- 385: <span class="ruby-identifier">sock</span>.<span class="ruby-identifier">flush</span>
27
- 386: <span class="ruby-keyword kw">end</span>
28
- 387:
29
- 388: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">read_response</span>(<span class="ruby-identifier">sock</span>)
30
- 389: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Object</span>
31
- 390: <span class="ruby-identifier">raise</span> <span class="ruby-identifier">$!</span>
32
- 391: <span class="ruby-keyword kw">ensure</span>
33
- 392: <span class="ruby-identifier">sock</span>.<span class="ruby-identifier">close</span> <span class="ruby-keyword kw">unless</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">sock</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">sock</span>.<span class="ruby-identifier">closed?</span>)
34
- 393: <span class="ruby-keyword kw">end</span>
35
- 394: <span class="ruby-keyword kw">end</span></pre>
36
- </body>
37
- </html>