Ignore unknown attributes from JPPS.
authorFrantišek Dvořák <valtri@civ.zcu.cz>
Thu, 12 Jun 2008 13:31:04 +0000 (13:31 +0000)
committerFrantišek Dvořák <valtri@civ.zcu.cz>
Thu, 12 Jun 2008 13:31:04 +0000 (13:31 +0000)
org.glite.jp.index/src/common.c
org.glite.jp.index/src/common.h
org.glite.jp.index/src/db_ops.c
org.glite.jp.index/src/soap_ops.c

index f6e8291..c3fb1a6 100644 (file)
@@ -46,3 +46,15 @@ int glite_jpis_stack_error_source(glite_jp_context_t ctx, int code, const char *
        va_end(ap);
        return code;
 }
+
+
+int glite_jpis_find_attr(char **attrs, const char *attr){
+       size_t i;
+
+        i = 0;
+       while (attrs[i]) {
+                if (strcasecmp(attr, attrs[i]) == 0) return 1;
+                i++;
+        }
+        return 0;
+}
index 19cebaa..7a3ecc3 100644 (file)
@@ -14,4 +14,6 @@ int glite_jpis_stack_error_source(glite_jp_context_t ctx, int code, const char *
 
 int glite_jp_typeplugin_load(glite_jp_context_t ctx,const char *so);
 
+int glite_jpis_find_attr(char **attrs, const char *attr);
+
 #endif
index 08b4345..38fa6a5 100644 (file)
 
 static int glite_jpis_db_queries_deserialize(glite_jp_query_rec_t **queries, void *blob, size_t blob_size) UNUSED;
 
-static int find_attr(char **attrs, const char *attr){
-       size_t i;
-
-        i = 0;
-       while (attrs[i]) {
-                if (strcasecmp(attr, attrs[i]) == 0) return 1;
-                i++;
-        }
-        return 0;
-}
 
 static int is_indexed(glite_jp_is_conf *conf, const char *attr) {
-       return find_attr(conf->indexed_attrs, attr);
+       return glite_jpis_find_attr(conf->indexed_attrs, attr);
 }
 
 static int is_singleval(glite_jp_is_conf *conf, const char *attr) {
-       return !find_attr(conf->multival_attrs, attr);
+       return !glite_jpis_find_attr(conf->multival_attrs, attr);
 }
 
 static int is_queriable(glite_jp_is_conf *conf, const char *attr){
-       return find_attr(conf->queriable_attrs, attr);
+       return glite_jpis_find_attr(conf->queriable_attrs, attr);
 }
 
 static size_t db_arg1_length(glite_jpis_context_t isctx, glite_jp_query_rec_t *query) {
index 2ebfef6..77bc313 100644 (file)
@@ -52,6 +52,10 @@ static int updateJob(glite_jpis_context_t ctx, const char *ps, struct jptype__jo
        for (iattrs = 0; iattrs < jobAttrs->__sizeattributes; iattrs++) {
                attr = GLITE_SECURITY_GSOAP_LIST_GET(jobAttrs->attributes, iattrs);
                glite_jpis_SoapToAttrVal(&av, attr);
+               if (!glite_jpis_find_attr(ctx->conf->attrs, av.name)) {
+                       fprintf(stderr, "unkown attribute '%s'\n", av.name);
+                       continue;
+               }
                if ((ret = glite_jpis_insertAttrVal(ctx, jobAttrs->jobid, &av)) != 0) return ret;
        }