diff --git a/plugins/corerouter/cr_map.c b/plugins/corerouter/cr_map.c index 066031e8..082e1dba 100644 --- a/plugins/corerouter/cr_map.c +++ b/plugins/corerouter/cr_map.c @@ -53,6 +53,7 @@ int uwsgi_cr_map_use_subscription(struct uwsgi_corerouter *ucr, struct coreroute peer->instance_address = peer->un->name; peer->instance_address_len = peer->un->len; peer->modifier1 = peer->un->modifier1; + peer->modifier2 = peer->un->modifier2; } else if (ucr->cheap && !ucr->i_am_cheap && uwsgi_no_subscriptions(ucr->subscriptions)) { uwsgi_gateway_go_cheap(ucr->name, ucr->queue, &ucr->i_am_cheap); @@ -88,6 +89,7 @@ split: peer->instance_address = peer->un->name; peer->instance_address_len = peer->un->len; peer->modifier1 = peer->un->modifier1; + peer->modifier2 = peer->un->modifier2; } else if (ucr->cheap && !ucr->i_am_cheap && uwsgi_no_subscriptions(ucr->subscriptions)) { uwsgi_gateway_go_cheap(ucr->name, ucr->queue, &ucr->i_am_cheap); diff --git a/plugins/fastrouter/fastrouter.c b/plugins/fastrouter/fastrouter.c index 2c2537fb..80f751d3 100644 --- a/plugins/fastrouter/fastrouter.c +++ b/plugins/fastrouter/fastrouter.c @@ -184,8 +184,8 @@ static ssize_t fr_instance_connected(struct corerouter_peer *peer) { peer->can_retry = 0; // fix modifiers - peer->in->buf[0] = peer->session->main_peer->modifier1; - peer->in->buf[3] = peer->session->main_peer->modifier2; + peer->in->buf[0] = peer->modifier1; + peer->in->buf[3] = peer->modifier2; // prepare to write the uwsgi packet peer->out = peer->session->main_peer->in; diff --git a/plugins/http/http.c b/plugins/http/http.c index 7df0ca7a..e2a36f5e 100644 --- a/plugins/http/http.c +++ b/plugins/http/http.c @@ -831,10 +831,16 @@ ssize_t http_parse(struct corerouter_peer *main_peer) { if (new_peer->instance_address_len == 0) return -1; + // fix modifiers + if (uhttp.modifier1) + new_peer->modifier1 = uhttp.modifier1; + if (uhttp.modifier2) + new_peer->modifier2 = uhttp.modifier2; + uint16_t pktsize = new_peer->out->pos-4; // fix modifiers - new_peer->out->buf[0] = new_peer->session->main_peer->modifier1; - new_peer->out->buf[3] = new_peer->session->main_peer->modifier2; + new_peer->out->buf[0] = new_peer->modifier1; + new_peer->out->buf[3] = new_peer->modifier2; // fix pktsize new_peer->out->buf[1] = (uint8_t) (pktsize & 0xff); new_peer->out->buf[2] = (uint8_t) ((pktsize >> 8) & 0xff); @@ -852,7 +858,7 @@ ssize_t http_parse(struct corerouter_peer *main_peer) { if (uwsgi_buffer_append(new_peer->out, main_peer->in->buf + hr->headers_size + 1, hr->remains)) return -1; } - if (new_peer->session->main_peer->modifier1 == 123) { + if (new_peer->modifier1 == 123) { // reset modifier1 to 0 new_peer->out->buf[0] = 0; hr->raw_body = 1; @@ -982,9 +988,6 @@ int http_alloc_session(struct uwsgi_corerouter *ucr, struct uwsgi_gateway_socket // set the retry hook cs->retry = hr_retry; struct http_session *hr = (struct http_session *) cs; - // set the modifier1 - cs->main_peer->modifier1 = uhttp.modifier1; - cs->main_peer->modifier2 = uhttp.modifier2; // default hook cs->main_peer->last_hook_read = hr_read;