public
Description: Phusion Passenger (mod_rails)
Homepage: http://www.modrails.com/
Clone URL: git://github.com/FooBarWidget/passenger.git
Search Repo:
Click here to lend your support to: passenger and make a donation at www.pledgie.com !
Fix some nasty bugs in the DispatcherBucket. Add some minor changes to 
other parts.
FooBarWidget (author)
Sat Feb 02 14:06:05 -0800 2008
commit  4becb67e448055fb31a89cb4979a8356c54f81c8
tree    2fdfe6b0b8a9fdda3db65862772278e9bca92d97
parent  92ed565be331bcda7548a4d14d8d495d9c316b80
...
50
51
52
53
 
54
55
56
...
50
51
52
 
53
54
55
56
0
@@ -50,7 +50,7 @@ private:
0
       this->sock = sock;
0
     }
0
     
0
- ~ApplicationPoolClient() {
0
+ virtual ~ApplicationPoolClient() {
0
       close(sock);
0
     }
0
     
...
139
140
141
142
143
144
145
...
156
157
158
159
160
161
162
163
164
165
166
167
168
...
186
187
188
189
190
191
192
193
194
 
 
195
196
197
...
210
211
212
213
 
214
215
216
...
139
140
141
 
142
143
144
...
155
156
157
 
158
159
160
161
162
 
163
164
165
...
183
184
185
 
 
 
 
 
 
186
187
188
189
190
...
203
204
205
 
206
207
208
209
0
@@ -139,7 +139,6 @@ public:
0
       P_TRACE("DispatcherBucket " << this << ": EOF");
0
       b = apr_bucket_immortal_make(b, "", 0);
0
       *str = (const char *) b->data;
0
- app->closeReader();
0
       return APR_SUCCESS;
0
     } else if (result != APR_SUCCESS) {
0
       P_TRACE("DispatcherBucket " << this << ": APR error " << result);
0
@@ -156,13 +155,11 @@ public:
0
       *str = chunk;
0
       *len = chunk_size;
0
       APR_BUCKET_INSERT_AFTER(b, dup_bucket(b->list));
0
- P_TRACE("DispatcherBucket " << this << ": read (" << string(*str, *len) << ")");
0
       return APR_SUCCESS;
0
     } else if (result == APR_EOF) {
0
       P_TRACE("DispatcherBucket " << this << ": EOF");
0
       b = apr_bucket_immortal_make(b, "", 0);
0
       *str = (const char *) b->data;
0
- app->closeReader();
0
       return APR_SUCCESS;
0
     } else {
0
       P_TRACE("DispatcherBucket " << this << ": APR error " << result);
0
@@ -186,12 +183,8 @@ dispatcher_bucket_create(apr_pool_t *pool, ApplicationPtr app, apr_interval_time
0
   b->type = &bucket_type_dispatcher;
0
   b->length = (apr_size_t) -1;
0
   b->start = -1;
0
-
0
- data = (DispatcherBucket *) apr_palloc(pool, sizeof(DispatcherBucket));
0
- if (data == NULL) {
0
- apr_bucket_free(b);
0
- return NULL;
0
- }
0
+
0
+ data = new DispatcherBucket();
0
   data->app = app;
0
   data->pipe = app->getReader();
0
   data->timeout = timeout;
0
@@ -210,7 +203,7 @@ dispatcher_bucket_read(apr_bucket *b, const char **str, apr_size_t *len, apr_rea
0
 static void
0
 dispatcher_bucket_destroy(void *d) {
0
   DispatcherBucket *data = (DispatcherBucket *) d;
0
- data->app = ApplicationPtr();
0
+ delete data;
0
   P_TRACE("DispatcherBucket " << d << " destroyed.");
0
 }
0
 
...
173
174
175
176
 
177
178
179
...
206
207
208
 
209
210
211
...
216
217
218
219
220
221
222
...
264
265
266
267
 
268
269
270
...
279
280
281
282
 
283
284
285
...
173
174
175
 
176
177
178
179
...
206
207
208
209
210
211
212
...
217
218
219
 
220
221
222
...
264
265
266
 
267
268
269
270
...
279
280
281
 
282
283
284
285
0
@@ -173,7 +173,7 @@ private:
0
     addHeader(headers, "HTTPS", lookupEnv(r, "HTTPS"));
0
     addHeader(headers, "CONTENT_TYPE", lookupHeader(r, "Content-type"));
0
     addHeader(headers, "DOCUMENT_ROOT", ap_document_root(r));
0
-
0
+
0
     // Set HTTP headers.
0
     const apr_array_header_t *hdrs_arr;
0
     apr_table_entry_t *hdrs;
0
@@ -206,6 +206,7 @@ private:
0
       entries.push_back(hdrs[i].key);
0
       entries.push_back(hdrs[i].val);
0
     }
0
+
0
     channel.write(entries);
0
   
0
     return APR_SUCCESS;
0
@@ -216,7 +217,6 @@ public:
0
     initDebugging();
0
     P_DEBUG("Initializing mod_passenger.");
0
     ap_add_version_component(pconf, "Phusion_Passenger/" PASSENGER_VERSION);
0
-
0
     const char *spawnManagerCommand = "/home/hongli/Projects/mod_rails/lib/mod_rails/spawn_manager.rb";
0
     applicationPoolServer = ptr(new ApplicationPoolServer(spawnManagerCommand, "", "production"));
0
   }
0
@@ -264,7 +264,7 @@ public:
0
       apr_bucket_brigade *bb;
0
       apr_bucket *b;
0
       
0
- P_DEBUG("Processing HTTP request: " << r->uri);
0
+ P_DEBUG("Processing HTTP request on process " << getpid() << ": " << r->uri);
0
       ApplicationPtr app(applicationPool->get(string(railsDir) + "/.."));
0
       P_TRACE("Connected to application: reader FD = " << app->getReader() << ", writer FD = " << app->getWriter());
0
       sendHeaders(r, app->getWriter());
0
@@ -279,7 +279,7 @@ public:
0
 
0
       ap_scan_script_header_err_brigade(r, bb, NULL);
0
       ap_pass_brigade(r->output_filters, bb);
0
-
0
+
0
       return OK;
0
     } catch (const exception &e) {
0
       ap_log_rerror(APLOG_MARK, APLOG_ERR, APR_EGENERAL, r, "mod_passenger: unknown uncaught error: %s", e.what());
...
5
6
7
 
 
 
8
9
10
...
12
13
14
15
 
16
17
18
...
5
6
7
8
9
10
11
12
13
...
15
16
17
 
18
19
20
21
0
@@ -5,6 +5,9 @@
0
 #include <ostream>
0
 #include <sstream>
0
 
0
+#include <sys/types.h>
0
+#include <unistd.h>
0
+
0
 namespace Passenger {
0
 
0
 #ifdef PASSENGER_DEBUG
0
@@ -12,7 +15,7 @@ namespace Passenger {
0
     do { \
0
       if (Passenger::_debugStream != 0) { \
0
         *Passenger::_debugStream << \
0
- "[" << __FILE__ << ":" << __LINE__ << "] " << \
0
+ "[" << getpid() << ":" << __FILE__ << ":" << __LINE__ << "] " << \
0
           expr << std::endl; \
0
       } \
0
     } while (false)

Comments

    No one has commented yet.