int
stratcon_realtime_http_postresolve(eventer_t e, int mask, void *closure,
                                   struct timeval *now) {
  noit_http_session_ctx *ctx = closure;
  realtime_context *rc = noit_http_session_dispatcher_closure(ctx);
  struct realtime_tracker *node;

  for(node = rc->checklist; node; node = node->next) {
    if(node->noit) {
      realtime_recv_ctx_t *rrctx;
      rrctx = calloc(1, sizeof(*rrctx));
      rrctx->ctx = ctx;
      rrctx->rt = node;
      stratcon_streamer_connection(NULL, node->noit, "noit",
                                   stratcon_realtime_recv_handler,
                                   NULL, rrctx,
                                   free_realtime_recv_ctx);
    }
    else
      noit_http_session_ref_dec(ctx);
  }
  if(noit_http_session_ref_cnt(ctx) == 1) {
    noit_http_response_end(ctx);
    clear_realtime_context(rc);
    noit_http_session_trigger(ctx, EVENTER_WRITE);
  }
  return 0;
}
static void
free_realtime_recv_ctx(void *vctx) {
  realtime_recv_ctx_t *rrctx = vctx;
  noit_http_session_ctx *ctx = rrctx->ctx;
  realtime_context *rc = noit_http_session_dispatcher_closure(ctx);

  if(noit_http_session_ref_dec(ctx) == 1) {
    noit_http_response_end(ctx);
    clear_realtime_context(rc);
    noit_http_session_trigger(ctx, EVENTER_WRITE | EVENTER_EXCEPTION);
  }
  free(rrctx);
}
static void
free_realtime_recv_ctx(void *vctx) {
  realtime_recv_ctx_t *rrctx = vctx;
  noit_http_session_ctx *ctx = rrctx->ctx;
  realtime_context *rc = ctx->dispatcher_closure;

  if(noit_atomic_dec32(&ctx->ref_cnt) == 1) {
    noit_http_response_end(ctx);
    clear_realtime_context(rc);
    if(ctx->conn.e) eventer_trigger(ctx->conn.e, EVENTER_WRITE | EVENTER_EXCEPTION);
  }
  free(rrctx);
}