Tcl Source Code

View Ticket
Login
Ticket UUID: ff82755e15f2e1165cf655c4e7d3f5984927c409
Title: http::geturl socket error reporting lacks stack trace
Type: Bug Version: 8.6.8
Submitter: oehhar Created on: 2018-04-19 06:55:53
Subsystem: 29. http Package Assigned To: nobody
Priority: 5 Medium Severity: Minor
Status: Closed Last Modified: 2018-04-19 06:57:26
Resolution: Fixed Closed By: oehhar
    Closed on: 2018-04-19 06:57:26
Description:

When the socket command within http::geturl raises an error, the stack trace is missing.

% package require http
2.8.12
% package require tls
1.8.0
% http::register https 443 [list ::tls::socket -tls1] ; # parameter missing to -tls1
443 {::tls::tls_socket -tls1}
% http::geturl https://www.hibc.de/
expected boolean value but got "-async"
% set errorInfo
expected boolean value but got "-async"
    while executing
"http::geturl https://www.hibc.de/"

The error message was quite surprising to me, as "http::geturl https://www.hibc.de/" has no argument "-async".

After this checkin [a3bf2db1fd], the error reporting was enhanced to contain full stack trace to show the origin of the issue:

% package require http
2.8.13
% package require tls
1.8.0
% http::register https 443 [list ::tls::socket -tls1] ; # parameter missing to -tls1
443 {::tls::socket -tls1}
% http::geturl https://www.hibc.de/
expected boolean value but got "-async"
% set errorInfo
expected boolean value but got "-async"
    while executing
"tls::import sock0551AF48 -server 0 -tls1 -async"
    ("eval" body line 1)
    invoked from within
"eval [list tls::import] $chan $iopts"
    invoked from within
"::tls::socket -tls1 -async www.hibc.de 443"
    ("eval" body line 1)
    invoked from within
"eval $defcmd $sockopts $targetAddr"
    invoked from within
"http::geturl https://www.hibc.de/"