When we left our intrepid adventures Thursday, the journey had progressed a
mere few steps before grinding to a halt after initialisation.
> %HTTPD-I-BEGIN, 17-SEP-2020 14:07:51, WASD:7080 accepting requests
The issue was found with perhaps three hours further investment the following
day.
Early in the start-up a gethostname() (standard C library networking call)
was returning with user-mode ASTs disabled. Now, you don't need to know too
much about WASD to understand that disabled AST delivery is an absolute
neurotoxin. An OS/network-stack/runtime bug. Reported to VSI (though likely
not for the first time). Workaround; $SETAST(1) immediately following the
call.
Woosh! Responsiveness on port 80.
That addressed, the next step for a modern Web, was to secure network
communications. The OpenVMS V9.0-D VM came with VSI SSL111 installed. So
far the executable image had been cross-compiled and cross-linked on the
Itanium system. To build against the SSL111 shareable images the object code
needed to be brought across to the x86 and linked there. It then reported...
%HTTPD-I-SOFTWAREID, HTTPd-WASD/11.5.1 OpenVMS/X86 SSL
WASD VMS Web Services, Copyright (C) 1996-2020 Mark G.Daniel.
8< snip 8<
%HTTPD-I-SYSTEM, VBOX VBOXFACP VMS V9.0-D
8< snip 8<
K:1 E:2 S:4 U:8 NET:322 !<- debug code before gethostname() user-mode ASTs active
K:1 E:2 S:4 U:0 NET:325 !<- after; user mode ASTs no longer active
8< snip 8<
%HTTPD-I-SSL, OpenSSL 1.1.1g 21 Apr 2020 (0x1010107F)
-SSL-I-PROTOCOL, TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
-SSL-I-OPTIONS, 0x80410854
-SSL-I-SNI, Server Name Indication enabled
-SSL-W-DH, no ephemeral DH param
%HTTPD-I-HTTP2, enabled
8< snip 8<
%HTTPD-I-SERVICE, http://x86v1.vsm.com.au:7080
%HTTPD-I-SERVICE, https://x86v1.vsm.com.au:7443
%HTTPD-I-SSL, x86v1.vsm.com.au:7443
Generate x86v1.vsm.com.au 2048 bit private key:
................++++++++++++
.......++++++++++++++
%HTTPD-I-DEMO, demonstration mode
8< snip 8<
%HTTPD-I-BEGIN, 18-SEP-2020 15:48:59, WASD:7080 accepting requests
A page containing images of the running server is available at
https://wasd.vsm.com.au/other/WASD%20x86-64%2019-SEP-2020.html
Total time invested (excluding troubleshooting the gethostname() issue);
something less than 8 hours.
Total code changes;
$ search *.c "#ifdef __x86
******************************
WASD_ROOT:[src.HTTPDX]httpd.c;6
#ifdef __x86_64
#ifdef __x86_64
#ifdef __x86_64
******************************
WASD_ROOT:[src.HTTPDX]net.c;17
#ifdef __x86_64
******************************
WASD_ROOT:[src.HTTPDX]sysplus.c;3
#ifdef __x86_64
******************************
WASD_ROOT:[src.HTTPDX]tcpip.c;7
#ifdef __x86_64
#ifdef __x86_64
******************************
WASD_ROOT:[src.HTTPDX]version.c;3
#ifdef __x86_64
A couple of these disable image analysis for reporting purposes; it seems
x86-64 ELF details are different to IA64. The SYSPLUS.C a similar
disablement for a system call reason. A couple to report X86 instead of AXP,
IA64 or VAX :-)
Seems a bit too easy. Of course VMS is VMS is VMS and now VMS. Mostly.
This is a real-life, almost real-time, porting report on a EAK. Most
reassuring. Porting application code should be (relatively) straightforward.
Though I'm pleased WASD doesn't do any kernel fiddles :-|
Trust this is of some interest and use, Mark.
|