Skip to content

Commit e108174

Browse files
committed
WMS: avoid wfs_use_default_extent_for_getfeature=false setting to override the BBOX parameter when a vendor-specific FILTER is set
1 parent d007716 commit e108174

1 file changed

Lines changed: 23 additions & 1 deletion

File tree

mapwms.c

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,29 @@ int msWMSApplyFilter(mapObj *map, int version, const char *filter,
450450
#endif
451451

452452
/* Apply filter to this layer */
453-
if( FLTApplyFilterToLayer(psNode, map, lp->index) != MS_SUCCESS ) {
453+
454+
/* But first, start by removing any wfs_use_default_extent_for_getfeature metadata item */
455+
/* that could result in the BBOX to be removed */
456+
char* old_value_wfs_use_default_extent_for_getfeature = NULL;
457+
{
458+
const char* old_value_tmp = msLookupHashTable(
459+
&(lp->metadata), "wfs_use_default_extent_for_getfeature");
460+
if( old_value_tmp )
461+
{
462+
old_value_wfs_use_default_extent_for_getfeature = msStrdup(old_value_tmp);
463+
msRemoveHashTable(&(lp->metadata), "wfs_use_default_extent_for_getfeature");
464+
}
465+
}
466+
467+
int ret = FLTApplyFilterToLayer(psNode, map, lp->index);
468+
if( old_value_wfs_use_default_extent_for_getfeature )
469+
{
470+
msInsertHashTable(&(lp->metadata), "wfs_use_default_extent_for_getfeature",
471+
old_value_wfs_use_default_extent_for_getfeature);
472+
msFree(old_value_wfs_use_default_extent_for_getfeature);
473+
}
474+
475+
if( ret != MS_SUCCESS ) {
454476
errorObj* ms_error = msGetErrorObj();
455477

456478
if(ms_error->code != MS_NOTFOUND) {

0 commit comments

Comments
 (0)