static inline void on_websocket_upgrade(struct rp_generator_t *self, h2o_timeout_t *timeout) { h2o_req_t *req = self->src_req; h2o_socket_t *sock = h2o_http1client_steal_socket(self->client); struct rp_ws_upgrade_info_t *info = h2o_mem_alloc(sizeof(*info)); info->upstream_sock = sock; info->timeout = timeout; info->ctx = req->conn->ctx; h2o_http1_upgrade(req, NULL, 0, on_websocket_upgrade_complete, info); }
static inline void on_websocket_upgrade(struct rp_generator_t *self, h2o_timeout_t *timeout, int rlen) { h2o_req_t *req = self->src_req; h2o_socket_t *sock = h2o_http1client_steal_socket(self->client); h2o_buffer_consume(&sock->input, rlen);//trash data after stealing sock. struct rp_ws_upgrade_info_t *info = h2o_mem_alloc(sizeof(*info)); info->upstream_sock = sock; info->timeout = timeout; info->ctx = req->conn->ctx; h2o_http1_upgrade(req, NULL, 0, on_websocket_upgrade_complete, info); }