Program: 84
Project: 84
Buggy source:
@Override protected void onInitialLineParsed(HttpHeader httpHeader,FilterChainContext ctx){
  super.onInitialLineParsed(httpHeader,ctx);
  if (httpHeader.isSkipRemainder()) {
    return;
  }
  final HttpTransactionContext context=provider.getHttpTransactionContext(ctx.getConnection());
  final int status=((HttpResponsePacket)httpHeader).getStatus();
  if (HttpStatus.CONINTUE_100.statusMatches(status)) {
    try {
      ctx.notifyUpstream(new ContinueEvent(context));
      return;
    }
 catch (    IOException e) {
      httpHeader.setSkipRemainder(true);
      context.abort(e);
    }
  }
  if (context.statusHandler != null && !context.statusHandler.handlesStatus(status)) {
    context.statusHandler=null;
    context.invocationStatus=StatusHandler.InvocationStatus.CONTINUE;
  }
 else {
    context.statusHandler=null;
  }
  if (context.invocationStatus == StatusHandler.InvocationStatus.CONTINUE) {
    if (HANDLER_MAP.containsKey(status)) {
      context.statusHandler=HANDLER_MAP.get(status);
    }
    if (context.statusHandler instanceof RedirectHandler) {
      if (!isRedirectAllowed(context)) {
        context.statusHandler=null;
      }
    }
  }
  if (isRedirectAllowed(context)) {
    if (isRedirect(status)) {
      if (context.statusHandler == null) {
        context.statusHandler=RedirectHandler.INSTANCE;
      }
      context.redirectCount.incrementAndGet();
      if (redirectCountExceeded(context)) {
        httpHeader.setSkipRemainder(true);
        context.abort(new MaxRedirectException());
      }
    }
 else {
      if (context.redirectCount.get() > 0) {
        context.redirectCount.set(0);
      }
    }
  }
  final GrizzlyResponseStatus responseStatus=new GrizzlyResponseStatus((HttpResponsePacket)httpHeader,getURI(context.requestUrl),provider);
  context.responseStatus=responseStatus;
  if (context.statusHandler != null) {
    return;
  }
  if (context.currentState != AsyncHandler.STATE.ABORT) {
    try {
      final AsyncHandler handler=context.handler;
      if (handler != null) {
        context.currentState=handler.onStatusReceived(responseStatus);
      }
    }
 catch (    Exception e) {
      httpHeader.setSkipRemainder(true);
      context.abort(e);
    }
  }
}

Fixed version (ground truth):
@Override protected void onInitialLineParsed(HttpHeader httpHeader,FilterChainContext ctx){
  super.onInitialLineParsed(httpHeader,ctx);
  if (httpHeader.isSkipRemainder()) {
    return;
  }
  final HttpTransactionContext context=provider.getHttpTransactionContext(ctx.getConnection());
  final int status=((HttpResponsePacket)httpHeader).getStatus();
  if (HttpStatus.CONINTUE_100.statusMatches(status)) {
    ctx.notifyUpstream(new ContinueEvent(context));
    return;
  }
  if (context.statusHandler != null && !context.statusHandler.handlesStatus(status)) {
    context.statusHandler=null;
    context.invocationStatus=StatusHandler.InvocationStatus.CONTINUE;
  }
 else {
    context.statusHandler=null;
  }
  if (context.invocationStatus == StatusHandler.InvocationStatus.CONTINUE) {
    if (HANDLER_MAP.containsKey(status)) {
      context.statusHandler=HANDLER_MAP.get(status);
    }
    if (context.statusHandler instanceof RedirectHandler) {
      if (!isRedirectAllowed(context)) {
        context.statusHandler=null;
      }
    }
  }
  if (isRedirectAllowed(context)) {
    if (isRedirect(status)) {
      if (context.statusHandler == null) {
        context.statusHandler=RedirectHandler.INSTANCE;
      }
      context.redirectCount.incrementAndGet();
      if (redirectCountExceeded(context)) {
        httpHeader.setSkipRemainder(true);
        context.abort(new MaxRedirectException());
      }
    }
 else {
      if (context.redirectCount.get() > 0) {
        context.redirectCount.set(0);
      }
    }
  }
  final GrizzlyResponseStatus responseStatus=new GrizzlyResponseStatus((HttpResponsePacket)httpHeader,getURI(context.requestUrl),provider);
  context.responseStatus=responseStatus;
  if (context.statusHandler != null) {
    return;
  }
  if (context.currentState != AsyncHandler.STATE.ABORT) {
    try {
      final AsyncHandler handler=context.handler;
      if (handler != null) {
        context.currentState=handler.onStatusReceived(responseStatus);
      }
    }
 catch (    Exception e) {
      httpHeader.setSkipRemainder(true);
      context.abort(e);
    }
  }
}