SSL channel "sockxxxx": error: tlsv1 alert protocol version`
A powerful editor and graphical debugger for code written in Scilab
Brought to you by:
ensegre,
fvogelnew1
High-level (user) analysis:
This error message is shown when Scipad checks on the internet whether a new version of itself is available or not (to let the user know he can upgrade his Scipad version).
By default Scipad does this check periodically (once a week) automatically. The user can change this setting through the "Options/Scipad updates" menu. Also the user can manually request such a check through the "Help/Check fro newer Scipad versions" menu. By default the user therefore will see this error message at first Scipad startup after installation, and then once a week only.
As a workaround, to prevent this error message from poping up just disable the feature: from the "Options / Scipad updates / Check for Scipad updates" menu, select "Never".
Developer-level analysis and fix:
Debug notes from my analysis of the problem (this is mostly directed to myself), all with Scipad-8.76 running on Vista:
I do not reproduce the issue when Scipad runs in standalone mode (tweaked to allow the requested check in that standalone mode) under ActiveState Tcl/Tk 8.5.16 (64bits since tcl_platform(pointerSize) is 8).
The issue triggers with Scilab-6.0.2(64 bits) and Scilab-5.5.2(64bits). Both embed Tcl/Tk 8.5.9 (64bits).
The line triggering the issue is the http::geturl line in proc launch_getlatestscipadversioninfofrominternet. This line is catched in the source code but this does not prevent the error because http::geturl has a -command option specifying a callback that is invoked when the HTTP transaction completes, therefore http::getur returns immediately. However, the error still happens before entering the callback proc callback_getlatestscipadversioninfofrominternet.
Scipad-8.76 ships with tls1.6 precompiled binaries (for Win at least). These precompiled binaries are used if Scipad cannot find an already installed tls version already present on the host system.
In Scilab-6.0.2 Scipad finds tls 1.6 64bits (therefore the version shipped wih Scipad). This tls 1.6 version triggers the error message.
In standalone mode, Scipad finds tls 1.6.3.1 from the Tcl/Tk 8.5.16 ActiveState version installed on my system. This is all 64bits and is found because in standalone mode auto_path contains the path to the teapot repository on my PC (C:\Program Files\Tcl\lib\teapot\package\win32-x86_64\lib, with tls1.6.3.1 present in there). So in standalone mode Scipad does not use the 1.6 version provided with Scipad, and this is why it works in standalone mode: 1.6.3.1 does not trigger the error message we're after.
Conclusion: upgrading the tls version provided with Scipad should fix the issue, as long as the 'package require' requires at least 1.6.3.1 (currently 'package require tls' does not specify any version in the Scipad source code).
I have found tls 1.6.7.1 precompiled binaries for all the major platforms in the ActiveState teapot repository:
http://teapot.activestate.com/entity/name/tls/index
Using these versions works: there is no error message any more. I will from now on be shipping this with Scipad, and require 1.6.3.1 at least (no need to require 1.6.7.1 since 1.6.3.1 already prevents the error message from happening).
Last note: I have found even more recent (1.7) precompiled tls binaries at https://sourceforge.net/projects/irrational-numbers/files/
From there I have downloaded tls-multiplatform-1.7.16.0.2.zip. This works with Scipad when running in standalone mode but loading of the dll fails (load command in the pkgIndex.tcl script) when attempted from Scipad running in Scilab-6.0.2. No idea why but since the issue is fixed by tls 1.6.3.2 I will ship this from now on with Scipad and won't dig any further.
Revision 795 of Scipad fixes this problem.