Skip to main content
November 29, 2016
Question

Intermittent issue loading SWF file from server using FP 23.0.0.207

  • November 29, 2016
  • 1 reply
  • 672 views

We have a client that updated there Citrix environment to use the new 23.0.0.207 version of flex player. Since the update they have been seening the following issue, intermittently. Clearing the browser cache(s) doesn't fix the issue, the client must log out of their Citrix client and re-log in to fix the issue.

The issue is that, intermittently, when the client.html calls the to load the swf file the URL is missing the file name is should be http://production.com:8080/application-server/client-6.0.6-HF3-SNAPSHOT.swf

but is

http://production.com:8080/application-server/

Successful loading:

http://production.com:8080/application-server/client.html HTTP GET 200 text/html 5.86 KB 47 ms refresh

http://production.com:8080/application-server/history/history.css HTTP GET 200 text/css 0.68 KB < 1 ms <link rel="stylesheet">

http://production.com:8080/application-server/AC_OETags.js HTTP GET 200 application/javascript 8.74 KB 15 ms  <script>

http://production.com:8080/application-server/history/history.js HTTP GET 200 application/javascript 24.28 KB 46 ms <script>
http://production.com:8080/application-server/client-6.0.6-HF3-SNAPSHOT.swf HTTP GET 200 application/x-shockwave-flash 4.11 MB 312 ms Flash
http://production.com:8080/application-server/application.ico HTTP GET 200 image/x-icon 22.26 KB 78 ms 
http:
//production.com:8080/application-server/graniteamf/amf HTTP POST 200 application/x-amf 0.55 KB 47 ms Flash
  

  What is looks like when it fails:

  http://production.com:8080/application-server/client.html HTTP GET 200 text/html 5.86 KB 47 ms refresh
   http://production.com:8080/application-server/history/history.css HTTP GET 200 text/css 0.68 KB 16 ms <link rel="stylesheet">
   http://production.com:8080/application-server/AC_OETags.js HTTP GET 200 application/javascript 8.74 KB 31 ms <script>
   http:
//production.com:8080/application-server/history/history.js HTTP GET 200 application/javascript 24.28 KB 31 ms <script>
   http://production.com:8080/application-server/ HTTP GET 200 text/html 386 B 62 ms Flash

   The following client.html code has not changed is many years.

   <!-- saved from url=(0014)about:internet -->
   <html lang="en">

  <!--

  Smart developers always View Source.

  This application was built using Adobe Flex, an open source framework

   for building rich Internet applications that get delivered via the

  Flash Player or to desktops via Adobe AIR.

  Learn more about Flex at http://flex.org
// -->

   <head>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <META HTTP-EQUIV="Pragma" CONTENT="no-cache">

  <!-- BEGIN Browser History required section -->

  <link rel="stylesheet" type="text/css" href="/application-server/history/history.css" />

  <!-- END Browser History required section -->

  <!-- BEGIN Setting browser favicon -->

  <link rel="icon" type="image/vnd.microsoft.icon" href="/application-server/application.ico">

  <link rel="SHORTCUT ICON" href="/application-server/application.ico"/>

  <!-- END Setting browser favicon -->

  <title>client</title>

  <script src="/application-server/AC_OETags.js" language="javascript"></script>

<!-- BEGIN Browser History required section -->
<script src="/application-server/history/history.js" language="javascript"></script>

<!-- END Browser History required section -->

<style>

   body { margin: 0px; overflow:hidden }

</style>

<script language="JavaScript" type="text/javascript">

   <!--
  // -----------------------------------------------------------------------------
  // Globals
  // Major version of Flash required
   var requiredMajorVersion = 10;

   // Minor version of Flash required
   var requiredMinorVersion = 0;

   // Minor version of Flash required
   var requiredRevision = 12;

   // -----------------------------------------------------------------------------
  // -->
</script>

<script type="text/javascript">

   function onFlexInitialized()

  {

   //alert("onFlexInitialized");

  <!-- Force the browser to set flex app with focus -->
   document.getElementById("${Main}").focus();

  }

</script>

<script src="/application-server/jstz.js" language="JavaScript"></script>

<script language="JavaScript" type="text/javascript">

   function getTimeZone() {

   var timeZone = null;

   try {

   // Try using the standard Intl library to obtain the standard time zone. IE11 and Chrome support this standard.
   timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;

   // Even browsers that do support Intl.DateTimeFormat().resolvedOptions() may return 'undefined' to represent
  // the "runtime's default time zone". If that happens, fall back to using the jstz library.
  // See http://stackoverflow.com/a/34602679
   if (timeZone == undefined) {

   timeZone = jstz.determine().name();

  }

  }

   catch (ex) {

   // IE 10 does not support the Intl library. If there is an error generating the time zone, try using the
  // jstz library as a fall-back:
   timeZone = jstz.determine().name();

  }

   return timeZone;

  }

</script>

</head>

<body scroll="no">

<script language="JavaScript" type="text/javascript">

   <!--
  // Version check for the Flash Player that has the ability to start Player Product Install (6.0r65)
   var hasProductInstall = DetectFlashVer(6, 0, 65);

   // Version check based upon the values defined in globals
   var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);

   if ( hasProductInstall && !hasRequestedVersion ) {

   // DO NOT MODIFY THE FOLLOWING FOUR LINES
  // Location visited after installation is complete if installation is required
   var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";

   var MMredirectURL = window.location;

   document.title = document.title.slice(0, 47) + " - Flash Player Installation";

   var MMdoctitle = document.title;

   AC_FL_RunContent(

   "src", "playerProductInstall",

   "FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+"",

   "width", "100%",

   "height", "100%",

   "align", "middle",

   "id", "Main",

   "wmode", "opaque",

   "quality", "high",

   "bgcolor", "#869ca7",

   "name", "Main",

   "allowScriptAccess","sameDomain",

   "type", "application/x-shockwave-flash",

   "pluginspage", "http://www.adobe.com/go/getflashplayer"
   );

  } else if (hasRequestedVersion) {

   // if we've detected an acceptable version
  // embed the Flash Content SWF when all tests are passed
   AC_FL_RunContent(

   "src", "/application-server/application--client-${project.version}",

   "width", "100%",

   "height", "100%",

   "align", "middle",

   <!--Build Key, Build Number and Version to be populated by the Bamboo installer build -->
   "FlashVars","buildKey=BUILD-KEY&buildNumber=BUILD-NUMBER&tcversion=${project.version}",

   "id", "Main",

   "wmode", "opaque",

   "quality", "high",

   "bgcolor", "#869ca7",

   "name", "Main",

   "allowScriptAccess","sameDomain",

   "type", "application/x-shockwave-flash",

   "pluginspage", "http://www.adobe.com/go/getflashplayer"
   );

  } else // flash is too old or we can't detect the plugin
   var alternateContent = 'Alternate HTML content should be placed here. '
   + 'This content requires the Adobe Flash Player. '
   + '<a href=http://www.adobe.com/go/getflash/>Get Flash</a>';

   document.write(alternateContent);  // insert non-flash content
   }

   // -->
</script>

<noscript>

   <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
   id="Main" width="100%" height="100%"
   codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">

   <param name="movie" value="/application-server/application--client-${project.version}.swf" />

   <param name="quality" value="high" />

   <param name="bgcolor" value="#869ca7" />

   <param name="allowScriptAccess" value="sameDomain" />

   <!--Build Key, Build Number and Version to be populated by the Bamboo installer build -->
   <param name="FlashVars" value="buildKey=BUILD-KEY&buildNumber=BUILD-NUMBER&tcversion=${project.version}"/>

   <embed src="/application-server/application--client-${project.version}.swf" quality="high" bgcolor="#869ca7"
   width="100%" height="100%" name="Main" align="middle"
   play="true"
   loop="false"
   wmode="opaque"
   quality="high"
   allowScriptAccess="sameDomain"
   type="application/x-shockwave-flash"
   <!--Build Key, Build Number and Version to be populated by the Bamboo installer build -->
   FlashVars="buildKey=BUILD-KEY&buildNumber=BUILD-NUMBER&tcversion=${project.version}"

  pluginspage="http://www.adobe.com/go/getflashplayer">

   </embed>

   </object>

</noscript>

</body>

</html>

Any help would be greatly appreciated.

Thanks, in advance.

    This topic has been closed for replies.

    1 reply

    jeromiec83223024
    Inspiring
    December 9, 2016

    This is a race condition in your javascript.  There's a template engine/jQuery thing that populates the stuff in between the ${ } tags.  They're not getting populated before the browser processes those tags, so they're null in the requests.  This doesn't have anything to do with Flash Player.  Effectively, we're correctly requesting the URL that we're given. Actually, in this case, the browser is making the request, the SWF doesn't exist, and we never even get invoked...

    The trick is going to be ensuring that when the browser processes this content, that it's actually populated.  There are lots of ways to do this, but most of them will boil down to using javascript to add this stuff to the DOM in a controlled way where you can ensure that all of the data is properly initialized before the browser evaluates it.

       <param name="FlashVars" value="buildKey=BUILD-KEY&buildNumber=BUILD-NUMBER&tcversion=${project.version}"/>

       <embed src="/application-server/application--client-${project.version}.swf" quality="high" bgcolor="#869ca7"
       width="100%" height="100%" name="Main" align="middle"
       play="true"
       loop="false"
       wmode="opaque"
       quality="high"
       allowScriptAccess="sameDomain"
       type="application/x-shockwave-flash"
       <!--Build Key, Build Number and Version to be populated by the Bamboo installer build -->
       FlashVars="buildKey=BUILD-KEY&buildNumber=BUILD-NUMBER&tcversion=${project.version}"

      pluginspage="http://www.adobe.com/go/getflashplayer">