Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Error 'Operation not allowed on sorted list' passing start params to ISAPI dll
#1
Hello,
I'm facing a problem that appeared using 15.3.12 version and higher (I've just tried 15.4.1).
In 15.2.63 that we use in production it works good.
Also, the problem is only on ISAPI module, compiling SA executable it's ok.

In our IWForm we call the application itself to start a new session passing some parmeter that we use to automatically log in, but the content it's not important.

procedure TWMyForm.MyButtonAsyncClick(Sender: TObject; EventParams: TStringList);
...
begin
  S:='var formIris = document.forms["SubmitForm"]; ' +
    'formIris.setAttribute("action","' + GGetWebApplicationThreadVar.InternalUrlBase + '/start' + '"); ' +
    'document.getElementById("HIDDEN_xusr").value = "user"; ' +
    'document.getElementById("HIDDEN_profilo").value = "profile"; ' +
    'formIris.elements["IW_SessionID_"].value="";' +
    'formIris.elements["IW_TrackID_"].value="";' +
    'SubmitClick("' + btnConferma.HTMLName + '", "", true); ';
  GGetWebApplicationThreadVar.CallBackResponse.AddJavaScriptToExecuteAsCDATA(S);

//After several operation, a new session is going to start; the call stack show me this call:
TIWServerSession.GetStartParams (no source available, I wasn't able to debug)

//soon after in IWApplication:
class procedure TIWParamsString.EncodeParams(const AParamsList: TStrings);
var
  i: Integer;
begin
  for i := 0 to AParamsList.Count - 1 do begin
    AParamsList[i] := TURL.ParamsEncode(AParamsList[i]);
  end;
end;

we have:
- AParamsList.Text = 'azienda=AZIN'#$D#$A'BTNANNULLA='#$D#$A'BTNCHIUDI_WC012FVISUALIZZAFILEFM='#$D#$A'BTNCONFERMA='#$D#$A'BTNSENDFILE='#$D#$A'CMBPROFILONUOVO=0'#$D#$A'database=IRIS'#$D#$A'EDTAJAXFORMID=W020FCambioProfilo31591375'#$D#$A'EDTPROFILOATTUALE=D'#$D#$A'GRDMEMOAJAX='#$D#$A'IW_Action=BTNCONFERMA'#$D#$A'IW_ActionParam='#$D#$A'IW_FormClass=TW020FCambioProfilo'#$D#$A'IW_FormName=W020FCambioProfilo'#$D#$A'IW_height='#$D#$A'IW_Location_=http://localhost/Iris32/W000PIrisWEB_IIS.dll/nnIGyEVlGfm5HVTjRMrNnWpaoVS/'#$D#$A'IW_Offset=0,0'#$D#$A'IW_SessionID_='#$D#$A'IW_TrackID_='#$D#$A'IW_width='#$D#$A'IW_WindowID_=wid=FRG~vjMCuGjy6z5eTYWBoef9ggm'#$D#$A'loginesterno=S'#$D#$A'profilo=R'#$D#$A'pwd='#$D#$A'usr='#$D#$A'WR010SCROLLLEFT=0'#$D#$A'WR010SCROLLTOP=0'#$D#$A'xusr=AV2y3wiTbaBdaQK+Qa6qkecYXHC8i2nqKP46P5svn4w=    '

- AParamsList.Sorted = True  //This is the problem in ISAPI!! In SA Sorted = False

then, the line "AParamsList[i] := TURL.ParamsEncode(AParamsList[i]);" make a call to TStringList.put in System.Classes
procedure TStringList.Put(Index: Integer; const S: string);
begin
  if Sorted then Error(@SSortedListError, 0);
  --> error page:
Application Error
An unhandled application error has occured within IrisWEB
Error message: Operation not allowed on sorted list

Could you please verify why this different behavior?
Thank you
Reply
#2
Hi, I'll try to recreate this here and let you know the results.

Parsing and storing of start parameters have changed indeed since IW 15.2 versions.
Reply
#3
(10-27-2023, 06:23 AM)Alexandre Machado Wrote: Hi, I'll try to recreate this here and let you know the results.

Parsing and storing of start parameters have changed indeed since IW 15.2 versions.

Hi Alexandre,
have been you able to recreate the case?
Thanks
Reply
#4
Hello Alexandre,
hoping you're investigating into the case, I'm wondering if may be helpful to have the IWServerSession source so I can debug more deeply.
Let me know if I can help you.
Otherwise, we can't use recent versions.

Regards
Reply
#5
I'm currently working on the issue and will have some more information soon.
Reply
#6
This issue has been resolved and will be available in the next IW release
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)