فهرست منبع

Merge branch 'candidate-6.0.6'

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 8 سال پیش
والد
کامیت
f736ed0841
3فایلهای تغییر یافته به همراه56 افزوده شده و 44 حذف شده
  1. 35 34
      dali/server/daldap.cpp
  2. 8 2
      ecl/hqlcpp/hqlresource.cpp
  3. 13 8
      esp/src/eclwatch/GraphWidget.js

+ 35 - 34
dali/server/daldap.cpp

@@ -121,44 +121,45 @@ public:
     {
         if (!ldapsecurity||((getLDAPflags()&DLF_ENABLED)==0)) 
             return SecAccess_Full;
+        StringBuffer username;
+        StringBuffer password;
+        if (udesc) 
+        {
+            udesc->getUserName(username);
+            udesc->getPassword(password);
+        }
+        else
+        {
+            WARNLOG("NULL UserDescriptor in daldap.cpp getPermissions('%s')",key ? key : "NULL");
+        }
+
+        if (0 == username.length())
+        {
+            username.append(filesdefaultuser);
+            decrypt(password, filesdefaultpassword);
+        }
+
+        Owned<ISecUser> user = ldapsecurity->createUser(username);
+        user->credentials().setPassword(password);
+        if (!ldapsecurity->authenticateUser(*user, NULL))
+        {
+            ERRLOG("LDAP: getPermissions(%s) scope=%s user=%s fails authentication",key?key:"NULL",obj?obj:"NULL",username.str());
+            return SecAccess_None;//deny
+        }
+
         bool filescope = stricmp(key,"Scope")==0;
         bool wuscope = stricmp(key,"workunit")==0;
-        if (filescope||wuscope) {
-            StringBuffer username;
-            StringBuffer password;
+
+        if (checkScopeScans() && (filescope || wuscope)) {
             int perm = SecAccess_None;
-            if (udesc) {
-                udesc->getUserName(username);
-                udesc->getPassword(password);
-            }
-            if (username.length()==0)  {
-#ifdef NULL_DALIUSER_STACKTRACE
-                DBGLOG("UNEXPECTED USER (NULL) in daldap.cpp getPermissions() line %d", __LINE__);
-                //following debug code to be removed
-                PrintStackReport();
-#endif
-                username.append(filesdefaultuser);
-                decrypt(password, filesdefaultpassword);
-            }
             unsigned start = msTick();
-            Owned<ISecUser> user = ldapsecurity->createUser(username);
-            if (user) {
-                user->credentials().setPassword(password);
-                if (!ldapsecurity->authenticateUser(*user, NULL))
-                {
-                    PROGLOG("LDAP: getPermissions(%s) scope=%s user=%s fails authentication",key?key:"NULL",obj?obj:"NULL",username.str());
-                    perm = SecAccess_None;//deny
-                }
-                else
-                {
-                    if (filescope)
-                        perm=ldapsecurity->authorizeFileScope(*user, obj);
-                    else if (wuscope)
-                        perm=ldapsecurity->authorizeWorkunitScope(*user, obj);
-                    if (perm == SecAccess_Unavailable)
-                        perm = SecAccess_None;
-                }
-            }
+            if (filescope)
+                perm=ldapsecurity->authorizeFileScope(*user, obj);
+            else if (wuscope)
+                perm=ldapsecurity->authorizeWorkunitScope(*user, obj);
+            if (perm == SecAccess_Unavailable)
+                perm = SecAccess_None;
+
             unsigned taken = msTick()-start;
 #ifndef _DEBUG
             if (taken>100) 

+ 8 - 2
ecl/hqlcpp/hqlresource.cpp

@@ -2668,6 +2668,9 @@ IHqlExpression * SpillerInfo::createSpilledRead(IHqlExpression * spillReason)
             dataset.setown(createDataset(no_table, args));
         }
 
+        if (original->isDictionary() && !dataset->isDictionary())
+            dataset.setown(createDictionary(no_createdictionary, LINK(dataset)));
+
         loseDistribution = false;
     }
 
@@ -2716,16 +2719,19 @@ IHqlExpression * SpillerInfo::createSpilledWrite(IHqlExpression * transformed, b
     }
     else
     {
+        LinkedHqlExpr dataset = LINK(transformed);
+        if (dataset->isDictionary())
+            dataset.setown(createDataset(no_datasetfromdictionary, dataset.getClear()));
         if (options->createSpillAsDataset && allowCommonDataset)
         {
-            IHqlExpression * value = LINK(transformed);
+            IHqlExpression * value = dataset.getClear();
             if (value->isDatarow())
                 value = createDatasetFromRow(value);
             spilledDataset.setown(createDataset(no_commonspill, value));
             args.append(*LINK(spilledDataset));
         }
         else
-            args.append(*LINK(transformed));
+            args.append(*dataset.getClear());
 
         args.append(*createSpillName());
         addSpillFlags(args, false);

+ 13 - 8
esp/src/eclwatch/GraphWidget.js

@@ -802,17 +802,11 @@ define([
                         var first = true;
                         var table = {};
                         var tr = {};
+                        var context = this;
                         for (var key in props) {
                             if (key[0] == "_")
                                 continue;
-
-                            if (first) {
-                                first = false;
-                                table = domConstruct.create("table", { border: 1, cellspacing: 0, width: "100%" }, place);
-                                tr = domConstruct.create("tr", null, table);
-                                domConstruct.create("th", { innerHTML: this.i18n.Property }, tr);
-                                domConstruct.create("th", { innerHTML: this.i18n.Value }, tr);
-                            }
+                            ensureHeader();
                             tr = domConstruct.create("tr", null, table);
                             domConstruct.create("td", { innerHTML: Utility.xmlEncode(key) }, tr);
                             domConstruct.create("td", { innerHTML: Utility.xmlEncode(props[key]) }, tr);
@@ -820,6 +814,7 @@ define([
                         arrayUtil.filter(wu.helpers, function (d) {
                             return globalID && d.minActivityId <= globalID && globalID <= d.maxActivityId;
                         }).forEach(function (d) {
+                            ensureHeader();
                             tr = domConstruct.create("tr", null, table);
                             domConstruct.create("td", { innerHTML: this.i18n.Helper }, tr);
                             domConstruct.create("td", { innerHTML: "<a href='" + "/WsWorkunits/WUFile?Wuid=" + wu.Wuid + "&Name=" + d.Name + "&IPAddress=" + d.IPAddress + "&Description=" + d.Description + "&Type=" + d.Type + "' target='_blank'>" + d.Description + "</a>" }, tr);
@@ -827,6 +822,16 @@ define([
                         if (first == false) {
                             domConstruct.create("br", null, place);
                         }
+
+                        function ensureHeader() {
+                            if (first) {
+                                first = false;
+                                table = domConstruct.create("table", { border: 1, cellspacing: 0, width: "100%" }, place);
+                                tr = domConstruct.create("tr", null, table);
+                                domConstruct.create("th", { innerHTML: context.i18n.Property }, tr);
+                                domConstruct.create("th", { innerHTML: context.i18n.Value }, tr);
+                            }
+                        }
                     }
                 }
             },