added QSE_HTTPD_RSRC_PROXY_ALLOW_UPGRADE and related code with it
This commit is contained in:
		| @ -56,9 +56,10 @@ struct task_proxy_t | ||||
| #define PROXY_X_FORWARDED_FOR      (1 << 15) /* X-Forwarded-For: added */ | ||||
| #define PROXY_VIA                  (1 << 16) /* Via: added to the request */ | ||||
| #define PROXY_VIA_RETURNING        (1 << 17) /* Via: added to the response */ | ||||
| #define PROXY_UPGRADE_REQUESTED    (1 << 18) | ||||
| #define PROXY_PROTOCOL_SWITCHED    (1 << 19) | ||||
| #define PROXY_GOT_BAD_REQUEST      (1 << 20) | ||||
| #define PROXY_ALLOW_UPGRADE        (1 << 18) | ||||
| #define PROXY_UPGRADE_REQUESTED    (1 << 19) | ||||
| #define PROXY_PROTOCOL_SWITCHED    (1 << 20) | ||||
| #define PROXY_GOT_BAD_REQUEST      (1 << 21) | ||||
| 	int flags; | ||||
| 	qse_httpd_t* httpd; | ||||
| 	qse_httpd_client_t* client; | ||||
| @ -977,6 +978,7 @@ static int task_init_proxy ( | ||||
|  | ||||
| 	if (arg->rsrc->flags & QSE_HTTPD_RSRC_PROXY_RAW) proxy->flags |= PROXY_RAW; | ||||
| 	if (arg->rsrc->flags & QSE_HTTPD_RSRC_PROXY_TRANSPARENT) proxy->flags |= PROXY_TRANSPARENT; | ||||
| 	if (arg->rsrc->flags & QSE_HTTPD_RSRC_PROXY_ALLOW_UPGRADE) proxy->flags |= PROXY_ALLOW_UPGRADE; | ||||
|  | ||||
| 	proxy->peer.local = arg->rsrc->src.nwad; | ||||
| 	if (arg->rsrc->flags & QSE_HTTPD_RSRC_PROXY_DST_STR) | ||||
| @ -1278,7 +1280,7 @@ qse_mbs_ncat (proxy->reqfwdbuf, spc, QSE_COUNTOF(spc)); | ||||
| 			snatch_needed = 1; | ||||
| 		} | ||||
|  | ||||
| 		if (qse_htre_getheaderval(arg->req, QSE_MT("Upgrade"))) | ||||
| 		if ((proxy->flags & PROXY_ALLOW_UPGRADE) && qse_htre_getheaderval(arg->req, QSE_MT("Upgrade"))) | ||||
| 		{ | ||||
| 			/* Upgrade: is found in the request header */ | ||||
| 			const qse_htre_hdrval_t* hv; | ||||
|  | ||||
| @ -2814,6 +2814,11 @@ static int make_resource ( | ||||
| 			req->flags |= QSE_HTRE_ATTR_PROXIED; | ||||
| 			return 0; | ||||
|  | ||||
| 		case QSE_HTTPD_SERVERSTD_ROOT_RELOC: | ||||
| 			target->type = QSE_HTTPD_RSRC_RELOC; | ||||
| 			target->u.reloc = tmp.root.u.reloc; | ||||
| 			return 0; | ||||
|  | ||||
| 		case QSE_HTTPD_SERVERSTD_ROOT_ERROR: | ||||
| 			target->type = QSE_HTTPD_RSRC_ERROR; | ||||
| 			target->u.error.code = tmp.root.u.error.code; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user