forked from pool/mapserver
* added upstream-patch for bug #3525 to work reliably with WMS 1.3.0 and
FCGI-mode OBS-URL: https://build.opensuse.org/package/show/Application:Geo/mapserver?expand=0&rev=56
This commit is contained in:
parent
3e731758f0
commit
149892ba03
809
bug3525_ms5.6.patch
Normal file
809
bug3525_ms5.6.patch
Normal file
@ -0,0 +1,809 @@
|
||||
Index: mapwms.c
|
||||
===================================================================
|
||||
--- mapwms.c (revision 10854)
|
||||
+++ mapwms.c (working copy)
|
||||
@@ -65,9 +65,8 @@
|
||||
**
|
||||
** Report current MapServer error in requested format.
|
||||
*/
|
||||
-static char *wms_exception_format=NULL;
|
||||
|
||||
-int msWMSException(mapObj *map, int nVersion, const char *exception_code)
|
||||
+int msWMSException(mapObj *map, int nVersion, const char *exception_code, char *wms_exception_format)
|
||||
{
|
||||
const char *encoding;
|
||||
char *schemalocation = NULL;
|
||||
@@ -282,7 +281,7 @@
|
||||
/*
|
||||
** Apply the TIME parameter to layers that are time aware
|
||||
*/
|
||||
-int msWMSApplyTime(mapObj *map, int version, char *time)
|
||||
+int msWMSApplyTime(mapObj *map, int version, char *time, char *wms_exception_format)
|
||||
{
|
||||
int i=0;
|
||||
layerObj *lp = NULL;
|
||||
@@ -313,7 +312,7 @@
|
||||
{
|
||||
msSetError(MS_WMSERR, "No Time value was given, and no default time value defined.", "msWMSApplyTime");
|
||||
return msWMSException(map, version,
|
||||
- "MissingDimensionValue");
|
||||
+ "MissingDimensionValue", wms_exception_format);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -322,7 +321,7 @@
|
||||
msSetError(MS_WMSERR, "No Time value was given, and the default time value %s is invalid or outside the time extent defined %s", "msWMSApplyTime", timedefault, timeextent);
|
||||
/* return MS_FALSE; */
|
||||
return msWMSException(map, version,
|
||||
- "InvalidDimensionValue");
|
||||
+ "InvalidDimensionValue", wms_exception_format);
|
||||
}
|
||||
msLayerSetTimeFilter(lp, timedefault, timefield);
|
||||
}
|
||||
@@ -337,7 +336,7 @@
|
||||
msSetError(MS_WMSERR, "Time value(s) %s given is invalid or outside the time extent defined (%s).", "msWMSApplyTime", time, timeextent);
|
||||
/* return MS_FALSE; */
|
||||
return msWMSException(map, version,
|
||||
- "InvalidDimensionValue");
|
||||
+ "InvalidDimensionValue", wms_exception_format);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -346,7 +345,7 @@
|
||||
msSetError(MS_WMSERR, "Time value(s) %s given is invalid or outside the time extent defined (%s), and default time set is invalid (%s)", "msWMSApplyTime", time, timeextent, timedefault);
|
||||
/* return MS_FALSE; */
|
||||
return msWMSException(map, version,
|
||||
- "InvalidDimensionValue");
|
||||
+ "InvalidDimensionValue", wms_exception_format);
|
||||
}
|
||||
else
|
||||
msLayerSetTimeFilter(lp, timedefault, timefield);
|
||||
@@ -380,7 +379,7 @@
|
||||
**
|
||||
*/
|
||||
int msWMSLoadGetMapParams(mapObj *map, int nVersion,
|
||||
- char **names, char **values, int numentries)
|
||||
+ char **names, char **values, int numentries, char *wms_exception_format)
|
||||
{
|
||||
int i, adjust_extent = MS_FALSE, nonsquare_enabled = MS_FALSE;
|
||||
int iUnits = -1;
|
||||
@@ -443,7 +442,7 @@
|
||||
if (ogrEnabled == 0)
|
||||
{
|
||||
msSetError(MS_WMSERR, "OGR support is not available.", "msWMSLoadGetMapParams()");
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -452,12 +451,12 @@
|
||||
if (strcasecmp(names[i], "SLD") == 0)
|
||||
{
|
||||
if ((status = msSLDApplySLDURL(map, values[i], -1, NULL)) != MS_SUCCESS)
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
}
|
||||
if (strcasecmp(names[i], "SLD_BODY") == 0)
|
||||
{
|
||||
if ((status =msSLDApplySLD(map, values[i], -1, NULL)) != MS_SUCCESS)
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -478,7 +477,7 @@
|
||||
if (layers==NULL || strlen(values[i]) <=0 || numlayers < 1) {
|
||||
msSetError(MS_WMSERR, "At least one layer name required in LAYERS.",
|
||||
"msWMSLoadGetMapParams()");
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
}
|
||||
|
||||
|
||||
@@ -609,14 +608,14 @@
|
||||
msSetError(MS_WMSERR,
|
||||
"Unsupported CRS namespace (only EPSG, AUTO2, CRS currently supported).",
|
||||
"msWMSLoadGetMapParams()");
|
||||
- return msWMSException(map, nVersion, "InvalidCRS");
|
||||
+ return msWMSException(map, nVersion, "InvalidCRS", wms_exception_format);
|
||||
}
|
||||
else
|
||||
{
|
||||
msSetError(MS_WMSERR,
|
||||
"Unsupported SRS namespace (only EPSG and AUTO currently supported).",
|
||||
"msWMSLoadGetMapParams()");
|
||||
- return msWMSException(map, nVersion, "InvalidSRS");
|
||||
+ return msWMSException(map, nVersion, "InvalidSRS", wms_exception_format);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -628,7 +627,7 @@
|
||||
if (tokens==NULL || n != 4) {
|
||||
msSetError(MS_WMSERR, "Wrong number of arguments for BBOX.",
|
||||
"msWMSLoadGetMapParams()");
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
}
|
||||
bboxrequest = values[i];
|
||||
|
||||
@@ -650,7 +649,7 @@
|
||||
msSetError(MS_WMSERR,
|
||||
"Invalid values for BBOX.",
|
||||
"msWMSLoadGetMapParams()");
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
}
|
||||
adjust_extent = MS_TRUE;
|
||||
}
|
||||
@@ -689,7 +688,7 @@
|
||||
"Unsupported output format (%s).",
|
||||
"msWMSLoadGetMapParams()",
|
||||
values[i] );
|
||||
- return msWMSException(map, nVersion, "InvalidFormat");
|
||||
+ return msWMSException(map, nVersion, "InvalidFormat", wms_exception_format);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -705,7 +704,7 @@
|
||||
"Unsupported output format (%s).",
|
||||
"msWMSLoadGetMapParams()",
|
||||
values[i] );
|
||||
- return msWMSException(map, nVersion, "InvalidFormat");
|
||||
+ return msWMSException(map, nVersion, "InvalidFormat", wms_exception_format);
|
||||
}
|
||||
}
|
||||
msFree( map->imagetype );
|
||||
@@ -742,7 +741,7 @@
|
||||
msSetError(MS_WMSERR,
|
||||
"Invalid format for the EXCEPTION parameter.",
|
||||
"msWMSLoadGetMapParams()");
|
||||
- return msWMSException(map, nVersion, "InvalidFormat");
|
||||
+ return msWMSException(map, nVersion, "InvalidFormat", wms_exception_format);
|
||||
}
|
||||
}
|
||||
if (bboxfound && bboxrequest && nVersion >= OWS_1_3_0)
|
||||
@@ -807,7 +806,7 @@
|
||||
msSetError(MS_WMSERR,
|
||||
"Invalid values for BBOX.",
|
||||
"msWMSLoadGetMapParams()");
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
}
|
||||
adjust_extent = MS_TRUE;
|
||||
}
|
||||
@@ -836,7 +835,7 @@
|
||||
*/
|
||||
if (timerequest)
|
||||
{
|
||||
- if (msWMSApplyTime(map, nVersion, stime) == MS_FAILURE)
|
||||
+ if (msWMSApplyTime(map, nVersion, stime, wms_exception_format) == MS_FAILURE)
|
||||
{
|
||||
return MS_FAILURE;/* msWMSException(map, nVersion, "InvalidTimeRequest"); */
|
||||
}
|
||||
@@ -857,7 +856,7 @@
|
||||
{
|
||||
msSetError(MS_WMSERR, "Invalid layer(s) given in the LAYERS parameter.",
|
||||
"msWMSLoadGetMapParams()");
|
||||
- return msWMSException(map, nVersion, "LayerNotDefined");
|
||||
+ return msWMSException(map, nVersion, "LayerNotDefined", wms_exception_format);
|
||||
}
|
||||
|
||||
/* validate srs value: When the SRS parameter in a GetMap request contains a
|
||||
@@ -919,13 +918,13 @@
|
||||
{
|
||||
msSetError(MS_WMSERR, "Invalid CRS given : CRS must be valid for all requested layers.",
|
||||
"msWMSLoadGetMapParams()");
|
||||
- return msWMSException(map, nVersion, "InvalidSRS");
|
||||
+ return msWMSException(map, nVersion, "InvalidSRS", wms_exception_format);
|
||||
}
|
||||
else
|
||||
{
|
||||
msSetError(MS_WMSERR, "Invalid SRS given : SRS must be valid for all requested layers.",
|
||||
"msWMSLoadGetMapParams()");
|
||||
- return msWMSException(map, nVersion, "InvalidSRS");
|
||||
+ return msWMSException(map, nVersion, "InvalidSRS", wms_exception_format);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -943,7 +942,7 @@
|
||||
/* Restore valid default values in case errors INIMAGE are used */
|
||||
map->width = 400;
|
||||
map->height= 300;
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
}
|
||||
|
||||
/* Check whether requested BBOX and width/height result in non-square pixels
|
||||
@@ -986,7 +985,7 @@
|
||||
"have any projection set. Please make sure your mapfile "
|
||||
"has a projection defined at the top level.",
|
||||
"msWMSLoadGetMapParams()");
|
||||
- return msWMSException(map, nVersion, "InvalidCRS");
|
||||
+ return msWMSException(map, nVersion, "InvalidCRS", wms_exception_format);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -994,7 +993,7 @@
|
||||
"have any projection set. Please make sure your mapfile "
|
||||
"has a projection defined at the top level.",
|
||||
"msWMSLoadGetMapParams()");
|
||||
- return msWMSException(map, nVersion, "InvalidSRS");
|
||||
+ return msWMSException(map, nVersion, "InvalidSRS", wms_exception_format);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1010,7 +1009,7 @@
|
||||
if (nTmp != 0)
|
||||
{
|
||||
msFreeProjection(&newProj);
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1035,7 +1034,7 @@
|
||||
original_srs) != 0)
|
||||
{
|
||||
msFreeProjection(&newProj);
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
}
|
||||
GET_LAYER(map, i)->project = MS_TRUE;
|
||||
}
|
||||
@@ -1060,7 +1059,7 @@
|
||||
nTmp = msLoadProjectionString(&(map->projection), srsbuffer);
|
||||
|
||||
if (nTmp != 0)
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
|
||||
iUnits = GetMapserverUnitUsingProj(&(map->projection));
|
||||
if (iUnits != -1)
|
||||
@@ -1125,7 +1124,7 @@
|
||||
msFreeCharArray(tokens, n);
|
||||
msFreeCharArray(layers, numlayers);
|
||||
|
||||
- return msWMSException(map, nVersion, "StyleNotDefined");
|
||||
+ return msWMSException(map, nVersion, "StyleNotDefined", wms_exception_format);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1139,7 +1138,7 @@
|
||||
msFreeCharArray(tokens, n);
|
||||
if (layers && numlayers > 0)
|
||||
msFreeCharArray(layers, numlayers);
|
||||
- return msWMSException(map, nVersion, "StyleNotDefined");
|
||||
+ return msWMSException(map, nVersion, "StyleNotDefined", wms_exception_format);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1174,31 +1173,31 @@
|
||||
else
|
||||
msSetError(MS_WMSERR, "Missing required parameter SRS", "msWMSLoadGetMapParams()");
|
||||
|
||||
- return msWMSException(map, nVersion, "MissingParameterValue");
|
||||
+ return msWMSException(map, nVersion, "MissingParameterValue", wms_exception_format);
|
||||
}
|
||||
|
||||
if (bboxfound == 0)
|
||||
{
|
||||
msSetError(MS_WMSERR, "Missing required parameter BBOX", "msWMSLoadGetMapParams()");
|
||||
- return msWMSException(map, nVersion, "MissingParameterValue");
|
||||
+ return msWMSException(map, nVersion, "MissingParameterValue", wms_exception_format);
|
||||
}
|
||||
|
||||
if (formatfound == 0 && (strcasecmp(request, "GetMap") == 0 || strcasecmp(request, "map") == 0))
|
||||
{
|
||||
msSetError(MS_WMSERR, "Missing required parameter FORMAT", "msWMSLoadGetMapParams()");
|
||||
- return msWMSException(map, nVersion, "MissingParameterValue");
|
||||
+ return msWMSException(map, nVersion, "MissingParameterValue", wms_exception_format);
|
||||
}
|
||||
|
||||
if (widthfound == 0)
|
||||
{
|
||||
msSetError(MS_WMSERR, "Missing required parameter WIDTH", "msWMSLoadGetMapParams()");
|
||||
- return msWMSException(map, nVersion, "MissingParameterValue");
|
||||
+ return msWMSException(map, nVersion, "MissingParameterValue", wms_exception_format);
|
||||
}
|
||||
|
||||
if (heightfound == 0)
|
||||
{
|
||||
msSetError(MS_WMSERR, "Missing required parameter HEIGHT", "msWMSLoadGetMapParams()");
|
||||
- return msWMSException(map, nVersion, "MissingParameterValue");
|
||||
+ return msWMSException(map, nVersion, "MissingParameterValue", wms_exception_format);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1935,7 +1934,8 @@
|
||||
/*
|
||||
** msWMSGetCapabilities()
|
||||
*/
|
||||
-int msWMSGetCapabilities(mapObj *map, int nVersion, cgiRequestObj *req, const char *requested_updatesequence)
|
||||
+int msWMSGetCapabilities(mapObj *map, int nVersion, cgiRequestObj *req, const char *requested_updatesequence,
|
||||
+ char *wms_exception_format)
|
||||
{
|
||||
char *dtd_url = NULL;
|
||||
char *script_url=NULL, *script_url_encoded=NULL;
|
||||
@@ -1961,11 +1961,11 @@
|
||||
i = msOWSNegotiateUpdateSequence(requested_updatesequence, updatesequence);
|
||||
if (i == 0) { /* current */
|
||||
msSetError(MS_WMSERR, "UPDATESEQUENCE parameter (%s) is equal to server (%s)", "msWMSGetCapabilities()", requested_updatesequence, updatesequence);
|
||||
- return msWMSException(map, nVersion, "CurrentUpdateSequence");
|
||||
+ return msWMSException(map, nVersion, "CurrentUpdateSequence", wms_exception_format);
|
||||
}
|
||||
if (i > 0) { /* invalid */
|
||||
msSetError(MS_WMSERR, "UPDATESEQUENCE parameter (%s) is higher than server (%s)", "msWMSGetCapabilities()", requested_updatesequence, updatesequence);
|
||||
- return msWMSException(map, nVersion, "InvalidUpdateSequence");
|
||||
+ return msWMSException(map, nVersion, "InvalidUpdateSequence", wms_exception_format);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2009,7 +2009,7 @@
|
||||
if ((script_url=msOWSGetOnlineResource(map, "MO", "onlineresource", req)) == NULL ||
|
||||
(script_url_encoded = msEncodeHTMLEntities(script_url)) == NULL)
|
||||
{
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
}
|
||||
|
||||
if (nVersion <= OWS_1_0_7 || nVersion >= OWS_1_3_0) /* 1.0.0 to 1.0.7 and >=1.3.0*/
|
||||
@@ -2596,7 +2596,8 @@
|
||||
/*
|
||||
** msWMSGetMap()
|
||||
*/
|
||||
-int msWMSGetMap(mapObj *map, int nVersion, char **names, char **values, int numentries)
|
||||
+int msWMSGetMap(mapObj *map, int nVersion, char **names, char **values, int numentries,
|
||||
+ char *wms_exception_format)
|
||||
{
|
||||
imageObj *img;
|
||||
int i = 0;
|
||||
@@ -2677,7 +2678,7 @@
|
||||
else
|
||||
img = msDrawMap(map, MS_FALSE);
|
||||
if (img == NULL)
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
|
||||
/* Set the HTTP Cache-control headers if they are defined
|
||||
in the map object */
|
||||
@@ -2689,7 +2690,7 @@
|
||||
msIO_printf("Content-type: %s%c%c",
|
||||
MS_IMAGE_MIME_TYPE(map->outputformat), 10,10);
|
||||
if (msSaveImage(map, img, NULL) != MS_SUCCESS)
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
|
||||
|
||||
msFreeImage(img);
|
||||
@@ -2697,7 +2698,7 @@
|
||||
return(MS_SUCCESS);
|
||||
}
|
||||
|
||||
-int msDumpResult(mapObj *map, int bFormatHtml, int nVersion)
|
||||
+int msDumpResult(mapObj *map, int bFormatHtml, int nVersion, char *wms_exception_format)
|
||||
{
|
||||
int numresults=0;
|
||||
int i;
|
||||
@@ -2770,7 +2771,7 @@
|
||||
if (msLayerResultsGetShape(lp, &shape, lp->resultcache->results[j].tileindex, lp->resultcache->results[j].shapeindex) != MS_SUCCESS)
|
||||
{
|
||||
msFree(itemvisible);
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
}
|
||||
|
||||
msIO_printf(" Feature %ld: \n", lp->resultcache->results[j].shapeindex);
|
||||
@@ -2797,7 +2798,8 @@
|
||||
/*
|
||||
** msWMSFeatureInfo()
|
||||
*/
|
||||
-int msWMSFeatureInfo(mapObj *map, int nVersion, char **names, char **values, int numentries)
|
||||
+int msWMSFeatureInfo(mapObj *map, int nVersion, char **names, char **values, int numentries,
|
||||
+ char *wms_exception_format)
|
||||
{
|
||||
int i, feature_count=1, numlayers_found=0;
|
||||
pointObj point = {-1.0, -1.0};
|
||||
@@ -2824,7 +2826,7 @@
|
||||
layers = msStringSplit(values[i], ',', &numlayers);
|
||||
if(layers==NULL || numlayers < 1 || strlen(msStringTrimLeft(values[i])) < 1) {
|
||||
msSetError(MS_WMSERR, "At least one layer name required in QUERY_LAYERS.", "msWMSFeatureInfo()");
|
||||
- return msWMSException(map, nVersion, "LayerNotDefined");
|
||||
+ return msWMSException(map, nVersion, "LayerNotDefined", wms_exception_format);
|
||||
}
|
||||
|
||||
for(j=0; j<map->numlayers; j++) {
|
||||
@@ -2872,12 +2874,12 @@
|
||||
if (query_layer)
|
||||
{
|
||||
msSetError(MS_WMSERR, "Layer(s) specified in QUERY_LAYERS parameter is not offered by the service instance.", "msWMSFeatureInfo()");
|
||||
- return msWMSException(map, nVersion, "LayerNotDefined");
|
||||
+ return msWMSException(map, nVersion, "LayerNotDefined", wms_exception_format);
|
||||
}
|
||||
else
|
||||
{
|
||||
msSetError(MS_WMSERR, "Required QUERY_LAYERS parameter missing for getFeatureInfo.", "msWMSFeatureInfo()");
|
||||
- return msWMSException(map, nVersion, "LayerNotDefined");
|
||||
+ return msWMSException(map, nVersion, "LayerNotDefined", wms_exception_format);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2890,7 +2892,7 @@
|
||||
if (GET_LAYER(map, i)->status == MS_ON && !msIsLayerQueryable(GET_LAYER(map, i)))
|
||||
{
|
||||
msSetError(MS_WMSERR, "Requested layer(s) are not queryable.", "msWMSFeatureInfo()");
|
||||
- return msWMSException(map, nVersion, "LayerNotQueryable");
|
||||
+ return msWMSException(map, nVersion, "LayerNotQueryable", wms_exception_format);
|
||||
}
|
||||
}
|
||||
if(point.x == -1.0 || point.y == -1.0) {
|
||||
@@ -2898,7 +2900,7 @@
|
||||
msSetError(MS_WMSERR, "Required I/J parameters missing for getFeatureInfo.", "msWMSFeatureInfo()");
|
||||
else
|
||||
msSetError(MS_WMSERR, "Required X/Y parameters missing for getFeatureInfo.", "msWMSFeatureInfo()");
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
}
|
||||
|
||||
/*wms1.3.0: check if the points are valid*/
|
||||
@@ -2907,7 +2909,7 @@
|
||||
if (point.x > map->width || point.y > map->height)
|
||||
{
|
||||
msSetError(MS_WMSERR, "Invalid I/J values", "msWMSFeatureInfo()");
|
||||
- return msWMSException(map, nVersion, "InvalidPoint");
|
||||
+ return msWMSException(map, nVersion, "InvalidPoint", wms_exception_format);
|
||||
}
|
||||
}
|
||||
/* Perform the actual query */
|
||||
@@ -2930,7 +2932,7 @@
|
||||
map->query.maxresults = feature_count;
|
||||
|
||||
if(msQueryByPoint(map) != MS_SUCCESS)
|
||||
- if((query_status=ms_error->code) != MS_NOTFOUND) return msWMSException(map, nVersion, NULL);
|
||||
+ if((query_status=ms_error->code) != MS_NOTFOUND) return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
|
||||
/* Generate response */
|
||||
if (strcasecmp(info_format, "MIME") == 0 ||
|
||||
@@ -2945,7 +2947,7 @@
|
||||
msIO_printf("Content-type: text/plain%c%c",10,10);
|
||||
msIO_printf("GetFeatureInfo results:\n");
|
||||
|
||||
- numresults = msDumpResult(map, 0, nVersion);
|
||||
+ numresults = msDumpResult(map, 0, nVersion, wms_exception_format);
|
||||
|
||||
if (numresults == 0) msIO_printf("\n Search returned no results.\n");
|
||||
|
||||
@@ -2986,10 +2988,10 @@
|
||||
if (query_status == MS_NOTFOUND && msObj->map->web.empty)
|
||||
{
|
||||
if(msReturnURL(msObj, msObj->map->web.empty, BROWSE) != MS_SUCCESS)
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
}
|
||||
else if (msReturnTemplateQuery(msObj, (char*)pszMimeType, NULL) != MS_SUCCESS)
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
|
||||
/* We don't want to free the map, and param names/values since they */
|
||||
/* belong to the caller, set them to NULL before freeing the mapservObj */
|
||||
@@ -3004,9 +3006,9 @@
|
||||
{
|
||||
msSetError(MS_WMSERR, "Unsupported INFO_FORMAT value (%s).", "msWMSFeatureInfo()", info_format);
|
||||
if (nVersion >= OWS_1_3_0)
|
||||
- return msWMSException(map, nVersion, "InvalidFormat");
|
||||
+ return msWMSException(map, nVersion, "InvalidFormat", wms_exception_format);
|
||||
else
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
}
|
||||
|
||||
return(MS_SUCCESS);
|
||||
@@ -3016,7 +3018,7 @@
|
||||
** msWMSDescribeLayer()
|
||||
*/
|
||||
int msWMSDescribeLayer(mapObj *map, int nVersion, char **names,
|
||||
- char **values, int numentries)
|
||||
+ char **values, int numentries, char *wms_exception_format)
|
||||
{
|
||||
int i = 0;
|
||||
char **layers = NULL;
|
||||
@@ -3048,12 +3050,12 @@
|
||||
if (nVersion >= OWS_1_3_0 && sld_version == NULL)
|
||||
{
|
||||
msSetError(MS_WMSERR, "Missing required parameter SLD_VERSION", "DescribeLayer()");
|
||||
- return msWMSException(map, nVersion, "MissingParameterValue");
|
||||
+ return msWMSException(map, nVersion, "MissingParameterValue", wms_exception_format);
|
||||
}
|
||||
if (nVersion >= OWS_1_3_0 && strcasecmp(sld_version, "1.1.0") != 0)
|
||||
{
|
||||
msSetError(MS_WMSERR, "SLD_VERSION must be 1.1.0", "DescribeLayer()");
|
||||
- return msWMSException(map, nVersion, "InvalidParameterValue");
|
||||
+ return msWMSException(map, nVersion, "InvalidParameterValue", wms_exception_format);
|
||||
}
|
||||
|
||||
if (encoding)
|
||||
@@ -3219,7 +3221,7 @@
|
||||
** msWMSGetLegendGraphic()
|
||||
*/
|
||||
int msWMSGetLegendGraphic(mapObj *map, int nVersion, char **names,
|
||||
- char **values, int numentries)
|
||||
+ char **values, int numentries, char *wms_exception_format)
|
||||
{
|
||||
char *pszLayer = NULL;
|
||||
char *pszFormat = NULL;
|
||||
@@ -3281,23 +3283,23 @@
|
||||
if (!pszLayer)
|
||||
{
|
||||
msSetError(MS_WMSERR, "Mandatory LAYER parameter missing in GetLegendGraphic request.", "msWMSGetLegendGraphic()");
|
||||
- return msWMSException(map, nVersion, "LayerNotDefined");
|
||||
+ return msWMSException(map, nVersion, "LayerNotDefined", wms_exception_format);
|
||||
}
|
||||
if (!pszFormat)
|
||||
{
|
||||
msSetError(MS_WMSERR, "Mandatory FORMAT parameter missing in GetLegendGraphic request.", "msWMSGetLegendGraphic()");
|
||||
- return msWMSException(map, nVersion, "InvalidFormat");
|
||||
+ return msWMSException(map, nVersion, "InvalidFormat", wms_exception_format);
|
||||
}
|
||||
|
||||
if (nVersion >= OWS_1_3_0 && sld_version == NULL)
|
||||
{
|
||||
msSetError(MS_WMSERR, "Missing required parameter SLD_VERSION", "GetLegendGraphic()");
|
||||
- return msWMSException(map, nVersion, "MissingParameterValue");
|
||||
+ return msWMSException(map, nVersion, "MissingParameterValue", wms_exception_format);
|
||||
}
|
||||
if (nVersion >= OWS_1_3_0 && strcasecmp(sld_version, "1.1.0") != 0)
|
||||
{
|
||||
msSetError(MS_WMSERR, "SLD_VERSION must be 1.1.0", "GetLegendGraphic()");
|
||||
- return msWMSException(map, nVersion, "InvalidParameterValue");
|
||||
+ return msWMSException(map, nVersion, "InvalidParameterValue", wms_exception_format);
|
||||
}
|
||||
/* check if layer name is valid. We only test the layer name and not */
|
||||
/* the group name. */
|
||||
@@ -3315,7 +3317,7 @@
|
||||
{
|
||||
msSetError(MS_WMSERR, "Invalid layer given in the LAYER parameter.",
|
||||
"msWMSGetLegendGraphic()");
|
||||
- return msWMSException(map, nVersion, "LayerNotDefined");
|
||||
+ return msWMSException(map, nVersion, "LayerNotDefined", wms_exception_format);
|
||||
}
|
||||
|
||||
/* validate format */
|
||||
@@ -3340,7 +3342,7 @@
|
||||
"Unsupported output format (%s).",
|
||||
"msWMSGetLegendGraphic()",
|
||||
values[i] );
|
||||
- return msWMSException(map, nVersion, "InvalidFormat");
|
||||
+ return msWMSException(map, nVersion, "InvalidFormat", wms_exception_format);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -3358,7 +3360,7 @@
|
||||
"Unsupported output format (%s).",
|
||||
"msWMSGetLegendGraphic()",
|
||||
pszFormat);
|
||||
- return msWMSException(map, nVersion, "InvalidFormat");
|
||||
+ return msWMSException(map, nVersion, "InvalidFormat", wms_exception_format);
|
||||
}
|
||||
}
|
||||
msApplyOutputFormat(&(map->outputformat), psFormat, MS_NOOVERRIDE,
|
||||
@@ -3379,7 +3381,7 @@
|
||||
{
|
||||
msSetError(MS_WMSERR, "style used in the STYLE parameter is not defined on the layer.",
|
||||
"msWMSGetLegendGraphic()");
|
||||
- return msWMSException(map, nVersion, "StyleNotDefined");
|
||||
+ return msWMSException(map, nVersion, "StyleNotDefined", wms_exception_format);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3473,16 +3475,16 @@
|
||||
"Unavailable RULE (%s).",
|
||||
"msWMSGetLegendGraphic()",
|
||||
psRule);
|
||||
- return msWMSException(map, nVersion, "InvalidRule");
|
||||
+ return msWMSException(map, nVersion, "InvalidRule", wms_exception_format);
|
||||
}
|
||||
}
|
||||
|
||||
if (img == NULL)
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
|
||||
msIO_printf("Content-type: %s%c%c", MS_IMAGE_MIME_TYPE(map->outputformat), 10,10);
|
||||
if (msSaveImage(map, img, NULL) != MS_SUCCESS)
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
|
||||
msFreeImage(img);
|
||||
|
||||
@@ -3495,7 +3497,7 @@
|
||||
** have a status set to on or default.
|
||||
*/
|
||||
int msWMSGetStyles(mapObj *map, int nVersion, char **names,
|
||||
- char **values, int numentries)
|
||||
+ char **values, int numentries, char *wms_exception_format)
|
||||
|
||||
{
|
||||
int i,j,k;
|
||||
@@ -3516,7 +3518,7 @@
|
||||
if (layers==NULL || numlayers < 1) {
|
||||
msSetError(MS_WMSERR, "At least one layer name required in LAYERS.",
|
||||
"msWMSGetStyles()");
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
}
|
||||
for(j=0; j<map->numlayers; j++)
|
||||
GET_LAYER(map, j)->status = MS_OFF;
|
||||
@@ -3544,7 +3546,7 @@
|
||||
{
|
||||
msSetError(MS_WMSERR, "Invalid layer(s) given in the LAYERS parameter.",
|
||||
"msWMSGetStyles()");
|
||||
- return msWMSException(map, nVersion, "LayerNotDefined");
|
||||
+ return msWMSException(map, nVersion, "LayerNotDefined", wms_exception_format);
|
||||
}
|
||||
|
||||
if (nVersion <= OWS_1_1_1)
|
||||
@@ -3620,6 +3622,7 @@
|
||||
int i, status, nVersion=OWS_VERSION_NOTSET;
|
||||
const char *version=NULL, *request=NULL, *service=NULL, *format=NULL, *updatesequence=NULL;
|
||||
const char * encoding;
|
||||
+ char *wms_exception_format = NULL;
|
||||
|
||||
encoding = msOWSLookupMetadata(&(map->web.metadata), "MO", "encoding");
|
||||
|
||||
@@ -3654,7 +3657,7 @@
|
||||
/* Invalid version format. msSetError() has been called by
|
||||
* msOWSParseVersionString() and we return the error as an exception
|
||||
*/
|
||||
- return msWMSException(map, OWS_VERSION_NOTSET, NULL);
|
||||
+ return msWMSException(map, OWS_VERSION_NOTSET, NULL, wms_exception_format);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -3667,7 +3670,7 @@
|
||||
(nVersion >= OWS_1_0_7 || nVersion == OWS_VERSION_NOTSET))
|
||||
{
|
||||
msSetError(MS_WMSERR, "Required SERVICE parameter missing.", "msWMSDispatch");
|
||||
- return msWMSException(map, nVersion, "ServiceNotDefined");
|
||||
+ return msWMSException(map, nVersion, "ServiceNotDefined", wms_exception_format);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -3680,8 +3683,8 @@
|
||||
if (nVersion == OWS_VERSION_NOTSET)
|
||||
nVersion = OWS_1_3_0;/* VERSION is optional with getCapabilities only */
|
||||
if ((status = msOWSMakeAllLayersUnique(map)) != MS_SUCCESS)
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
- return msWMSGetCapabilities(map, nVersion, req, updatesequence);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
+ return msWMSGetCapabilities(map, nVersion, req, updatesequence, wms_exception_format);
|
||||
}
|
||||
else if (request && (strcasecmp(request, "context") == 0 ||
|
||||
strcasecmp(request, "GetContext") == 0) )
|
||||
@@ -3710,11 +3713,11 @@
|
||||
{
|
||||
msSetError(MS_WMSERR, "GetContext not enabled on this server.",
|
||||
"msWMSDispatch()");
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
}
|
||||
|
||||
if ((status = msOWSMakeAllLayersUnique(map)) != MS_SUCCESS)
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
|
||||
if (encoding)
|
||||
msIO_printf("Content-type: text/xml; charset=%s%c%c", encoding,10,10);
|
||||
@@ -3722,7 +3725,7 @@
|
||||
msIO_printf("Content-type: text/xml%c%c",10,10);
|
||||
|
||||
if ( msWriteMapContext(map, stdout) != MS_SUCCESS )
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
/* Request completed */
|
||||
return MS_SUCCESS;
|
||||
}
|
||||
@@ -3765,7 +3768,7 @@
|
||||
msSetError(MS_WMSERR,
|
||||
"Incomplete WMS request: VERSION parameter missing",
|
||||
"msWMSDispatch()");
|
||||
- return msWMSException(map, OWS_VERSION_NOTSET, NULL);
|
||||
+ return msWMSException(map, OWS_VERSION_NOTSET, NULL, wms_exception_format);
|
||||
}
|
||||
|
||||
if (request==NULL)
|
||||
@@ -3773,17 +3776,19 @@
|
||||
msSetError(MS_WMSERR,
|
||||
"Incomplete WMS request: REQUEST parameter missing",
|
||||
"msWMSDispatch()");
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
}
|
||||
|
||||
if ((status = msOWSMakeAllLayersUnique(map)) != MS_SUCCESS)
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
|
||||
if (strcasecmp(request, "GetLegendGraphic") == 0)
|
||||
- return msWMSGetLegendGraphic(map, nVersion, req->ParamNames, req->ParamValues, req->NumParams);
|
||||
+ return msWMSGetLegendGraphic(map, nVersion, req->ParamNames, req->ParamValues, req->NumParams,
|
||||
+ wms_exception_format);
|
||||
|
||||
if (strcasecmp(request, "GetStyles") == 0)
|
||||
- return msWMSGetStyles(map, nVersion, req->ParamNames, req->ParamValues, req->NumParams);
|
||||
+ return msWMSGetStyles(map, nVersion, req->ParamNames, req->ParamValues, req->NumParams,
|
||||
+ wms_exception_format);
|
||||
|
||||
else if (request && strcasecmp(request, "GetSchemaExtension") == 0)
|
||||
return msWMSGetSchemaExtension(map);
|
||||
@@ -3792,25 +3797,29 @@
|
||||
if (strcasecmp(request, "map") == 0 || strcasecmp(request, "GetMap") == 0 ||
|
||||
strcasecmp(request, "feature_info") == 0 || strcasecmp(request, "GetFeatureInfo") == 0 || strcasecmp(request, "DescribeLayer") == 0)
|
||||
{
|
||||
- status = msWMSLoadGetMapParams(map, nVersion, req->ParamNames, req->ParamValues, req->NumParams);
|
||||
+ status = msWMSLoadGetMapParams(map, nVersion, req->ParamNames, req->ParamValues, req->NumParams,
|
||||
+ wms_exception_format);
|
||||
if (status != MS_SUCCESS) return status;
|
||||
}
|
||||
|
||||
|
||||
if (strcasecmp(request, "map") == 0 || strcasecmp(request, "GetMap") == 0)
|
||||
- return msWMSGetMap(map, nVersion, req->ParamNames, req->ParamValues, req->NumParams);
|
||||
+ return msWMSGetMap(map, nVersion, req->ParamNames, req->ParamValues, req->NumParams,
|
||||
+ wms_exception_format);
|
||||
else if (strcasecmp(request, "feature_info") == 0 || strcasecmp(request, "GetFeatureInfo") == 0)
|
||||
- return msWMSFeatureInfo(map, nVersion, req->ParamNames, req->ParamValues, req->NumParams);
|
||||
+ return msWMSFeatureInfo(map, nVersion, req->ParamNames, req->ParamValues, req->NumParams,
|
||||
+ wms_exception_format);
|
||||
else if (strcasecmp(request, "DescribeLayer") == 0)
|
||||
{
|
||||
- return msWMSDescribeLayer(map, nVersion, req->ParamNames, req->ParamValues, req->NumParams);
|
||||
+ return msWMSDescribeLayer(map, nVersion, req->ParamNames, req->ParamValues, req->NumParams,
|
||||
+ wms_exception_format);
|
||||
}
|
||||
|
||||
/* Hummmm... incomplete or unsupported WMS request */
|
||||
if (service != NULL && strcasecmp(service, "WMS") == 0)
|
||||
{
|
||||
msSetError(MS_WMSERR, "Incomplete or unsupported WMS request", "msWMSDispatch()");
|
||||
- return msWMSException(map, nVersion, NULL);
|
||||
+ return msWMSException(map, nVersion, NULL, wms_exception_format);
|
||||
}
|
||||
else
|
||||
return MS_DONE; /* Not a WMS request */
|
||||
Index: mapows.h
|
||||
===================================================================
|
||||
--- mapows.h (revision 10854)
|
||||
+++ mapows.h (working copy)
|
||||
@@ -408,8 +408,8 @@
|
||||
* mapwms.c
|
||||
*====================================================================*/
|
||||
int msWMSDispatch(mapObj *map, cgiRequestObj *req);
|
||||
-MS_DLL_EXPORT int msWMSLoadGetMapParams(mapObj *map, int nVersion,
|
||||
- char **names, char **values, int numentries);
|
||||
+MS_DLL_EXPORT int msWMSLoadGetMapParams(mapObj *map, int nVersion, char **names,
|
||||
+ char **values, int numentries, char *wms_exception_format);
|
||||
|
||||
|
||||
/*====================================================================
|
||||
Index: mapobject.c
|
||||
===================================================================
|
||||
--- mapobject.c (revision 10854)
|
||||
+++ mapobject.c (working copy)
|
||||
@@ -774,10 +774,17 @@
|
||||
{
|
||||
#ifdef USE_WMS_SVR
|
||||
int version;
|
||||
+ char *wms_exception_format = NULL;
|
||||
+ int i =0;
|
||||
|
||||
version = msOWSParseVersionString(wmtver);
|
||||
+ for(i=0; i<request->NumParams; i++)
|
||||
+ {
|
||||
+ if (strcasecmp(request->ParamNames[i], "EXCEPTIONS") == 0)
|
||||
+ wms_exception_format = request->ParamValues[i];
|
||||
+ }
|
||||
return msWMSLoadGetMapParams(map, version, request->ParamNames,
|
||||
- request->ParamValues, request->NumParams);
|
||||
+ request->ParamValues, request->NumParams, wms_exception_format);
|
||||
#else
|
||||
msSetError(MS_WMSERR, "WMS server support is not available.",
|
||||
"msMapLoadOWSParameters()");
|
@ -60,6 +60,7 @@ BuildRequires: libgcj-devel
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
Patch0: mapserver-5.4.1_buildchecks.patch
|
||||
Patch1: hidden_layer.patch
|
||||
Patch2: bug3525_ms5.6.patch
|
||||
|
||||
#%define python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")
|
||||
%define _cgibindir /srv/www/cgi-bin
|
||||
@ -111,6 +112,7 @@ within the Java programming language.
|
||||
%setup -q
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
|
||||
# fix spurious perm bits
|
||||
chmod -x tests/home.png
|
||||
@ -287,6 +289,9 @@ rm -rf %{buildroot}
|
||||
%{_javadir}/*.jar
|
||||
|
||||
%changelog
|
||||
* Tue Jan 11 2011 Stephan Holl <stephan.holl@intevation.de> 5.6.5
|
||||
- added upstream-patch for mapserver bug #3525 to work reliably with WMS
|
||||
1.3.0 and FCGI-mode
|
||||
* Mon Dec 06 2010 Stephan Holl <stephan.holl@intevation.de> 5.6.5
|
||||
- added --with-experimental-png-compile-flag
|
||||
* Wed Oct 13 2010 Stephan Holl <stephan.holl@intevation.de> 5.6.5
|
||||
|
Loading…
Reference in New Issue
Block a user