Lines Matching defs:cre
131 relay_httpdesc_init(struct ctl_relay_event *cre)
139 cre->desc = desc;
181 struct ctl_relay_event *cre = arg;
182 struct http_descriptor *desc = cre->desc;
183 struct rsession *con = cre->con;
201 cre->timedout = 0;
205 __func__, con->se_id, size, cre->toread);
207 if (cre->dir == RELAY_DIR_RESPONSE)
209 cre->toread = TOREAD_HTTP_HEADER;
228 cre->done = 1;
231 if (cre->line > 1) {
239 cre->headerlen += linelen;
240 if (cre->headerlen > proto->httpheaderlen) {
260 if (++cre->line == 1) {
268 if (cre->dir == RELAY_DIR_RESPONSE) {
328 } else if (cre->dir == RELAY_DIR_REQUEST) {
388 if (cre->line == 2) {
454 cre->toread = strtonum(value, 0,
476 cre->toread != 0) {
512 if (cre->done)
542 if (cre->done) {
548 action = relay_test(proto, cre);
576 if (cre->dir == RELAY_DIR_REQUEST && upgrade_ws != NULL) {
590 } else if (cre->dir == RELAY_DIR_RESPONSE &&
595 cre->dst->toread = TOREAD_UNLIMITED;
596 cre->dst->bev->readcb = relay_read;
610 cre->toread = TOREAD_UNLIMITED;
618 cre->toread = 0;
649 if (cre->toread > 0) {
654 if (cre->toread < 0) {
655 cre->toread = TOREAD_UNLIMITED;
661 cre->toread = TOREAD_HTTP_HEADER;
667 cre->toread = TOREAD_HTTP_CHUNK_LENGTH;
677 if (cre->toread == TOREAD_UNLIMITED &&
683 if (cre->dir == RELAY_DIR_REQUEST) {
684 if (relay_writerequest_http(cre->dst, cre) == -1)
687 if (relay_writeresponse_http(cre->dst, cre) == -1)
690 if (relay_bufferevent_print(cre->dst, "\r\n") == -1 ||
691 relay_writeheader_http(cre->dst, cre) == -1 ||
692 relay_bufferevent_print(cre->dst, "\r\n") == -1)
695 relay_reset_http(cre);
697 if (cre->dir == RELAY_DIR_REQUEST && cre->toread <= 0 &&
698 cre->dst->state != STATE_CONNECTED) {
713 switch (relay_splice(cre)) {
736 struct ctl_relay_event *cre = arg;
737 struct rsession *con = cre->con;
744 cre->timedout = 0;
748 con->se_id, size, cre->toread);
751 if (relay_spliceadjust(cre) == -1)
754 if (cre->toread > 0) {
756 if ((off_t)size > cre->toread) {
757 size = cre->toread;
758 if (relay_bufferevent_write_chunk(cre->dst, src, size)
761 cre->toread = 0;
763 if (relay_bufferevent_write_buffer(cre->dst, src) == -1)
765 cre->toread -= size;
768 size, cre->toread);
770 if (cre->toread == 0) {
771 cre->toread = TOREAD_HTTP_HEADER;
778 if (cre->dst->bev && EVBUFFER_LENGTH(EVBUFFER_OUTPUT(cre->dst->bev)) >
780 bufferevent_disable(cre->bev, EV_READ);
796 struct ctl_relay_event *cre = arg;
797 struct rsession *con = cre->con;
805 cre->timedout = 0;
809 con->se_id, size, cre->toread);
812 if (relay_spliceadjust(cre) == -1)
815 if (cre->toread > 0) {
817 if ((off_t)size > cre->toread) {
818 size = cre->toread;
819 if (relay_bufferevent_write_chunk(cre->dst, src, size)
822 cre->toread = 0;
824 if (relay_bufferevent_write_buffer(cre->dst, src) == -1)
826 cre->toread -= size;
829 size, cre->toread);
831 switch (cre->toread) {
863 if (relay_bufferevent_print(cre->dst, line) == -1 ||
864 relay_bufferevent_print(cre->dst, "\r\n") == -1) {
870 if ((cre->toread = llval) == 0) {
872 cre->toread = TOREAD_HTTP_CHUNK_TRAILER;
883 if (relay_bufferevent_print(cre->dst, line) == -1 ||
884 relay_bufferevent_print(cre->dst, "\r\n") == -1) {
890 cre->toread = TOREAD_HTTP_HEADER;
899 if (relay_bufferevent_print(cre->dst, "\r\n") == -1)
901 cre->toread = TOREAD_HTTP_CHUNK_LENGTH;
910 if (cre->dst->bev && EVBUFFER_LENGTH(EVBUFFER_OUTPUT(cre->dst->bev)) >
912 bufferevent_disable(cre->bev, EV_READ);
927 relay_reset_http(struct ctl_relay_event *cre)
929 struct http_descriptor *desc = cre->desc;
934 cre->headerlen = 0;
935 cre->line = 0;
936 cre->done = 0;
940 _relay_lookup_url(struct ctl_relay_event *cre, char *host, char *path,
943 struct rsession *con = cre->con;
988 relay_lookup_url(struct ctl_relay_event *cre, const char *host, struct kv *kv)
990 struct http_descriptor *desc = (struct http_descriptor *)cre->desc;
1033 if ((ret = _relay_lookup_url(cre, hi[i],
1038 if ((ret = _relay_lookup_url(cre, hi[i],
1050 if ((ret = _relay_lookup_url(cre, hi[i],
1064 relay_lookup_cookie(struct ctl_relay_event *cre, const char *str,
1118 relay_lookup_query(struct ctl_relay_event *cre, struct kv *kv)
1120 struct http_descriptor *desc = cre->desc;
1297 relay_expand_http(struct ctl_relay_event *cre, char *val, char *buf,
1300 struct rsession *con = cre->con;
1302 struct http_descriptor *desc = cre->desc;
1326 if (print_host(&cre->ss, ibuf, sizeof(ibuf)) == NULL)
1333 snprintf(ibuf, sizeof(ibuf), "%u", ntohs(cre->port));
1373 struct ctl_relay_event *cre)
1375 struct http_descriptor *desc = (struct http_descriptor *)cre->desc;
1396 struct ctl_relay_event *cre)
1398 struct http_descriptor *desc = (struct http_descriptor *)cre->desc;
1443 *cre)
1446 struct http_descriptor *desc = (struct http_descriptor *)cre->desc;
1530 relay_httpquery_test(struct ctl_relay_event *cre, struct relay_rule *rule,
1533 struct http_descriptor *desc = cre->desc;
1538 if (cre->dir == RELAY_DIR_RESPONSE || kv->kv_type != KEY_TYPE_QUERY)
1542 else if ((res = relay_lookup_query(cre, kv)) != 0)
1551 relay_httpheader_test(struct ctl_relay_event *cre, struct relay_rule *rule,
1554 struct http_descriptor *desc = cre->desc;
1585 relay_httppath_test(struct ctl_relay_event *cre, struct relay_rule *rule,
1588 struct http_descriptor *desc = cre->desc;
1593 if (cre->dir == RELAY_DIR_RESPONSE || kv->kv_type != KEY_TYPE_PATH)
1613 relay_httpurl_test(struct ctl_relay_event *cre, struct relay_rule *rule,
1616 struct http_descriptor *desc = cre->desc;
1622 if (cre->dir == RELAY_DIR_RESPONSE || kv->kv_type != KEY_TYPE_URL ||
1635 } else if ((res = relay_lookup_url(cre, host->kv_value, kv)) != 0)
1643 relay_httpcookie_test(struct ctl_relay_event *cre, struct relay_rule *rule,
1646 struct http_descriptor *desc = cre->desc;
1654 switch (cre->dir) {
1676 else if ((res = relay_lookup_cookie(cre, match->kv_value,
1687 relay_match_actions(struct ctl_relay_event *cre, struct relay_rule *rule,
1690 struct rsession *con = cre->con;
1722 relay_apply_actions(struct ctl_relay_event *cre, struct kvlist *actions,
1725 struct rsession *con = cre->con;
1726 struct http_descriptor *desc = cre->desc;
1774 if (kv_setkey(kp, "%s", cre->dir ==
1859 if ((ptr = relay_expand_http(cre, kp->kv_value, buf,
1903 if (kv_log(con, mp, con->se_label, cre->dir)
1924 if (cre->dir == RELAY_DIR_REQUEST && con->se_table != tbl) {
1939 relay_log(con, cre->dir == RELAY_DIR_REQUEST ? "" : ";");
1961 relay_test(struct protocol *proto, struct ctl_relay_event *cre)
1964 struct http_descriptor *desc = cre->desc;
1972 con = cre->con;
1980 if (r->rule_dir && r->rule_dir != cre->dir)
1984 else if (RELAY_AF_NEQ(r->rule_af, cre->ss.ss_family) ||
1985 RELAY_AF_NEQ(r->rule_af, cre->dst->ss.ss_family))
1987 else if (RELAY_ADDR_CMP(&r->rule_src, &cre->ss) != 0)
1997 else if (relay_httpheader_test(cre, r, &matches) != 0)
1999 else if ((res = relay_httpquery_test(cre, r, &matches)) != 0)
2001 else if (relay_httppath_test(cre, r, &matches) != 0)
2003 else if ((res = relay_httpurl_test(cre, r, &matches)) != 0)
2005 else if ((res = relay_httpcookie_test(cre, r, &matches)) != 0)
2012 if (relay_match_actions(cre, r, &matches,
2047 if (rule != NULL && relay_match_actions(cre, rule, NULL, &actions, &tbl)
2053 if (relay_apply_actions(cre, &actions, tbl) != 0) {