public
Description: A very fast & simple Ruby web server
Homepage: http://code.macournoyer.com/thin/
Clone URL: git://github.com/macournoyer/thin.git
Search Repo:
use buffer_append where possible
macournoyer (author)
Mon Apr 07 18:58:17 -0700 2008
commit  86dd5e916aee6553ba0936e9b356c43a53f46b17
tree    94091260b3e25456cd3834ddc9328a508664f7f7
parent  6965f98d4ee6d29529dedda0974b327736ed0dc4
...
79
80
81
82
 
83
84
85
...
158
159
160
161
162
163
164
165
...
173
174
175
176
 
 
177
178
179
180
181
182
183
184
 
185
186
187
...
79
80
81
 
82
83
84
85
...
158
159
160
 
161
162
163
164
...
172
173
174
 
175
176
177
178
179
180
181
182
 
 
183
184
185
186
0
@@ -79,7 +79,7 @@
0
   if (c == NULL) {
0
     connections_create(backend->connections, CONNECTIONS_SIZE);
0
     cs = backend->connections->items;
0
- /* FIXME: bug here on high concurrency, causes segfault on line 88 */
0
+ /* FIXME: bug here on high concurrency, causes segfault in libev code */
0
     c = &cs[++i];
0
   }
0
   
0
@@ -158,7 +158,6 @@
0
   size_t n;
0
   
0
   n = sprintf(c->write_buffer.ptr, "HTTP/1.1 %s" CRLF, get_status_line(status));
0
-
0
   c->write_buffer.len = n;
0
 }
0
 
0
0
@@ -173,15 +172,15 @@
0
   for (i = 0; i < RARRAY_LEN(keys); ++i) {
0
     key = RARRAY_PTR(keys)[i];
0
     value = rb_hash_aref(headers, key);
0
- n += sprintf((char *) c->write_buffer.ptr + c->write_buffer.len + n,
0
+ /* FIXME possible buffer overflow, replace w/ buffer_append or something */
0
+ n += sprintf((char *) c->write_buffer.ptr + c->write_buffer.len + n,
0
                  "%s: %s" CRLF,
0
                  RSTRING_PTR(key),
0
                  RSTRING_PTR(value));
0
   }
0
   c->write_buffer.len += n;
0
   
0
- memcpy(c->write_buffer.ptr + c->write_buffer.len, CRLF, 2);
0
- c->write_buffer.len += 2;
0
+ buffer_append(&c->write_buffer, CRLF, 2);
0
 }
0
 
0
 static VALUE iter_body(VALUE chunk, VALUE *val_conn)

Comments

    No one has commented yet.