about summary refs log tree commit homepage
path: root/ext
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2010-04-08 15:12:07 -0700
committerEric Wong <normalperson@yhbt.net>2010-04-08 15:12:27 -0700
commit0313f0651caf9ef35d320c6049d4f32ace711457 (patch)
treed3fe5618697761b3a84d5bcb6cf964319560526d /ext
parent31925d90c3d292d0b5f20524082b7d3dc2e08fcb (diff)
downloadclogger-0313f0651caf9ef35d320c6049d4f32ace711457.tar.gz
some people subclass HeaderHash and want them preserved
through the middleware stack.
Diffstat (limited to 'ext')
-rw-r--r--ext/clogger_ext/clogger.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/ext/clogger_ext/clogger.c b/ext/clogger_ext/clogger.c
index f0087fe..93c609d 100644
--- a/ext/clogger_ext/clogger.c
+++ b/ext/clogger_ext/clogger.c
@@ -472,7 +472,7 @@ static void append_response(struct clogger *c, VALUE key)
 {
         VALUE v;
 
-        assert(rb_obj_class(c->headers) == cHeaderHash);
+        assert(rb_obj_is_kind_of(c->headers, cHeaderHash) && "not HeaderHash");
 
         v = rb_funcall(c->headers, sq_brace_id, 1, key);
         v = NIL_P(v) ? g_dash : byte_xs(v);
@@ -703,7 +703,8 @@ static VALUE ccall(struct clogger *c, VALUE env)
                 c->body = tmp[2];
 
                 rv = rb_ary_new4(3, tmp);
-                if (c->need_resp && cHeaderHash != rb_obj_class(c->headers)) {
+                if (c->need_resp &&
+                    ! rb_obj_is_kind_of(tmp[1], cHeaderHash)) {
                         c->headers = rb_funcall(cHeaderHash, new_id, 1, tmp[1]);
                         rb_ary_store(rv, 1, c->headers);
                 }