enhanced httpd to relocate when an index file is found for a directory.
enhanced httpd to match host names better
This commit is contained in:
		| @ -2195,6 +2195,11 @@ static void free_resource ( | ||||
| 				QSE_MMGR_FREE (httpd->mmgr, (qse_mchar_t*)target->u.cgi.path); | ||||
| 			break; | ||||
|  | ||||
| 		case QSE_HTTPD_RSRC_RELOC: | ||||
| 			if (target->u.reloc.dst != qpath) | ||||
| 				QSE_MMGR_FREE (httpd->mmgr, (qse_mchar_t*)target->u.reloc.dst); | ||||
| 			break; | ||||
|  | ||||
| 		default: | ||||
| 			/* nothing to do */ | ||||
| 			break; | ||||
| @ -2284,8 +2289,19 @@ static int attempt_cgi ( | ||||
| 		{ | ||||
| 			if (tmp->idxfile) | ||||
| 			{ | ||||
| 				#if 0 | ||||
| 				script = merge_paths (httpd, tmp->qpath, tmp->idxfile); | ||||
| 				if (script == QSE_NULL) goto oops; | ||||
| 				#endif | ||||
|  | ||||
| 				/* create a relocation resource */ | ||||
| 				target->type = QSE_HTTPD_RSRC_RELOC; | ||||
| 				target->u.reloc.dst = merge_paths (httpd, tmp->qpath, tmp->idxfile); | ||||
| 				if (target->u.reloc.dst == QSE_NULL) goto oops; | ||||
| 				/* free tmp->xpath here upon success since it's not used for relocation. | ||||
| 				 * it is freed by the called upon failure so the 'oops' part don't free it */ | ||||
| 				QSE_MMGR_FREE (httpd->mmgr, tmp->xpath); | ||||
| 				return 1; | ||||
| 			} | ||||
| 			else script = (qse_mchar_t*)tmp->qpath; | ||||
|  | ||||
| @ -2575,20 +2591,33 @@ auth_ok: | ||||
| 		if (server_xtn->query (httpd, client->server, req, tmp.xpath, QSE_HTTPD_SERVERSTD_FILEACC, &target->u.err.code) <= -1) target->u.err.code = 500; | ||||
| 		if (target->u.err.code != 200) | ||||
| 		{ | ||||
| 			target->type = QSE_HTTPD_RSRC_ERR; | ||||
| 			/* free xpath since it won't be used */ | ||||
| 			QSE_MMGR_FREE (httpd->mmgr, tmp.xpath); | ||||
| 			target->type = QSE_HTTPD_RSRC_ERR; | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			/* fall back to a normal file. */ | ||||
| 			target->type = QSE_HTTPD_RSRC_FILE; | ||||
| 			target->u.file.path = tmp.xpath; | ||||
|  | ||||
| 			if (server_xtn->query (httpd, client->server, req, tmp.xpath, QSE_HTTPD_SERVERSTD_MIME, &target->u.file.mime) <= -1) | ||||
| 			if (tmp.idxfile) | ||||
| 			{ | ||||
| 				/* don't care about failure */ | ||||
| 				target->u.file.mime = QSE_NULL; | ||||
| 				/* free xpath since it won't be used */ | ||||
| 				QSE_MMGR_FREE (httpd->mmgr, tmp.xpath); | ||||
|  | ||||
| 				/* create a relocation resource */ | ||||
| 				target->type = QSE_HTTPD_RSRC_RELOC; | ||||
| 				target->u.reloc.dst = merge_paths (httpd, tmp.qpath, tmp.idxfile); | ||||
| 				if (target->u.reloc.dst == QSE_NULL) return -1; | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				target->type = QSE_HTTPD_RSRC_FILE; | ||||
| 				target->u.file.path = tmp.xpath; | ||||
|  | ||||
| 				if (server_xtn->query (httpd, client->server, req, tmp.xpath, QSE_HTTPD_SERVERSTD_MIME, &target->u.file.mime) <= -1) | ||||
| 				{ | ||||
| 					/* don't care about failure */ | ||||
| 					target->u.file.mime = QSE_NULL; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
		Reference in New Issue
	
	Block a user