Fix accept_stream being called post-channel deletion
- Have the server clear the accept_stream callback prior to destroying
the channel (required a small transport op protocol change)
- Have the transport not enact transport ops until parsing is completed
(prevents accept_stream from disappearing mid-parse)
diff --git a/src/core/transport/transport.h b/src/core/transport/transport.h
index 8902c5d..7a007ef 100644
--- a/src/core/transport/transport.h
+++ b/src/core/transport/transport.h
@@ -139,8 +139,10 @@
gpr_slice *goaway_message;
/** set the callback for accepting new streams;
this is a permanent callback, unlike the other one-shot closures */
- void (*set_accept_stream)(grpc_exec_ctx *exec_ctx, void *user_data,
- grpc_transport *transport, const void *server_data);
+ bool set_accept_stream;
+ void (*set_accept_stream_fn)(grpc_exec_ctx *exec_ctx, void *user_data,
+ grpc_transport *transport,
+ const void *server_data);
void *set_accept_stream_user_data;
/** add this transport to a pollset */
grpc_pollset *bind_pollset;