If OpenSSL is what's being used, yes, I'd guess so.
I've just run into more and more HTTPS sites that no longer work. Obviously, it could easily be the browser engine, but given how fast security is moving, that could be it too.
Did you already get the latest certificates? (Fetch the file https://curl.haxx.se/ca/cacert.pem and save it as curl-ca-bundle.crt in your main Odyssey directory - backup the old one first, of course, just in case.)
But it was long ago and with an old version of the os ... tomorrow i will try reproduce the problem with all the latest stuff (os, browser and mui), just to be sure to have the same kind of crash
/* This script checks for installed versions of below mentioned files and
updates them, if needed, automatically. It does this by checking both the
web based and installed file dates and only if the web based file is newer
it will be downloaded/updated.
(If a file is not installed at all, it will simply install it without going
through the check)
1.11: Fix: Adapt to new HOSTS date format
1.10: Fix: Suppress AREXX' automatic ReadLN() processing
1.09: Fix: Make the log respect AmigaOS4's logfile standard
1.08: Addition: Check for sane months to prevent downloading corrupted files
1.07: Addition: CALL macro used for months conversion
1.06: Addition: Check for the existance of and install missing files
1.05: Fix: Wrong format in log output
1.04: Fix: The hosts file was never copied
1.03: Addition: Add more information to the log
1.02: Addition: Add log file (T:) to reflect the status
*/
date_today=DATE(S)
ADDRESS COMMAND 'echo "X: [00:00:00] File name | Process | Reason | Install date | Web date" >> T:WBLUpdater.log'
/* Month conversion index */
months="Jan01Feb02Mar03Apr04May05Jun06Jul07Aug08Sep09Oct10Nov11Dec12"
/* cURL_ca_bundle */
/* Check if file exists and install, if needed */
IF OPEN(curl_ca_bundle,'DEVS:curl-ca-bundle.crt','R') = 0 THEN DO
/* No file found, install it (-k insecure and -s silent) from source */
ADDRESS COMMAND 'curl -k -s "https://curl.haxx.se/ca/cacert.pem" -o DEVS:curl-ca-bundle.crt'
ADDRESS COMMAND 'copy DEVS:curl-ca-bundle.crt Tools:Internet/Netsurf/Resources/ca-bundle'
ADDRESS COMMAND 'copy DEVS:curl-ca-bundle.crt Tools:Internet/YAM/Resources/ca-bundle.crt'
ADDRESS COMMAND 'echo "W: ['TIME('N')'] curl_ca_bundle.crt | Install | Missing | 'date_installed' | 'date_web'" >> T:WBLUpdater.log'
END
/* Pulling web based file date */
ADDRESS COMMAND 'curl -r127-143 -s --cacert DEVS:curl-ca-bundle.crt "https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn-social/hosts" >T:hosts_date'
OPEN(hosts_date,'T:hosts_date','R')
date_munged=READLN(hosts_date)
CLOSE(hosts_date)
ADDRESS COMMAND 'Delete T:hosts_date'
/* HOSTS changed it's date format to 'day full-month 4-digit-year', thus we adapt the date to the format the other two files use ('3-letter-month day 4-digit-year') before sending it to the macro */
date_munged=SUBSTR(SUBWORD(date_munged,2,1),1,3) SUBWORD(date_munged,1,1) SUBWORD(date_munged,3,1)
/* HOSTS changed it's date format to 'day full-month 4-digit-year', thus we adapt the date to the format the other two files use ('3-letter-month day 4-digit-year') before sending it to the macro */
date_munged=SUBSTR(SUBWORD(date_munged,2,1),1,3) SUBWORD(date_munged,1,1) SUBWORD(date_munged,3,1)
/* Converting month */
CALL MonthConversion
/* Updating file and adding the known local ip addresses */
IF date_error = 0 THEN DO
IF date_web > date_installed THEN DO
ADDRESS COMMAND 'curl -s --cacert DEVS:curl-ca-bundle.crt "https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn-social/hosts" -o DEVS:Internet/HOSTS'
ADDRESS COMMAND "type Tools:Internet/Network/IP-List >> DEVS:Internet/HOSTS"
ADDRESS COMMAND 'echo "I: ['TIME('N')'] HOSTS | Update | Additions | 'date_installed' | 'date_web'" >> T:WBLUpdater.log'
END
ELSE
ADDRESS COMMAND 'echo "W: ['TIME('N')'] HOSTS | | No additions | 'date_installed' | 'date_web'" >> T:WBLUpdater.log'
END
ELSE
ADDRESS COMMAND 'echo "E: ['TIME('N')'] HOSTS | Error | Defect | 'date_installed' | 'date_web'" >> T:WBLUpdater.log'
END
/* pci.ids */
/* Check if file exists and install, if needed */
IF OPEN(pci_ids,'DEVS:pci.ids','R') = 0 THEN DO
ADDRESS COMMAND 'curl -s --cacert DEVS:curl-ca-bundle.crt "https://pci-ids.ucw.cz/v2.2/pci.ids" -o DEVS:pci.ids'
ADDRESS COMMAND 'echo "W: ['TIME('N')'] pci.ids | Install | Missing | 'date_installed' | 'date_web'" >> T:WBLUpdater.log'
END
ELSE DO
CLOSE(pci_ids)
/* Pulling web based file date */
ADDRESS COMMAND 'curl -r56-65 -s --cacert DEVS:curl-ca-bundle.crt "https://pci-ids.ucw.cz/v2.2/pci.ids" >T:pci.ids_date'
OPEN(pci_ids_date,'T:pci.ids_date','R')
date_web=COMPRESS(READLN(pci_ids_date),'-')
/* Checking for sane months to prevent downloading corrupted files */
IF INDEX(months,(SUBSTR(date_web,5,2))) > 0 THEN
date_error=0
ELSE
date_error=1
CLOSE(pci_ids_date)
ADDRESS COMMAND 'Delete T:pci.ids_date'
/* Pulling installed file date */
OPEN(pci_ids,'DEVS:pci.ids','R')
CALL READLN(pci_ids)
CALL READLN(pci_ids)
CALL READLN(pci_ids)
CALL READLN(pci_ids)
date_installed=COMPRESS(SUBWORD(READLN(pci_ids),2,1),'-')
/* Checking for sane months to prevent downloading corrupted files */
IF INDEX(months,(SUBSTR(date_installed,5,2))) > 0 THEN
date_error=0
ELSE
date_error=1
CLOSE(pci_ids)
/* Updating file and copying it to the known places where it's used from */
IF date_error = 0 THEN DO
IF date_web > date_installed THEN DO
ADDRESS COMMAND 'curl -s --cacert DEVS:curl-ca-bundle.crt "https://pci-ids.ucw.cz/v2.2/pci.ids" -o DEVS:pci.ids'
ADDRESS COMMAND 'echo "I: ['TIME('N')'] pci.ids | Update | Additions | 'date_installed' | 'date_web'" >> T:WBLUpdater.log'
END
ELSE
ADDRESS COMMAND 'echo "W: ['TIME('N')'] pci.ids | | No additions | 'date_installed' | 'date_web'" >> T:WBLUpdater.log'
END
ELSE
ADDRESS COMMAND 'echo "E: ['TIME('N')'] pci.ids | Error | Defect | 'date_installed' | 'date_web'" >> T:WBLUpdater.log'
END
EXIT
MonthConversion:
date_day=SUBWORD(date_munged,2,1)
date_munged_month=SUBSTR(date_munged,1,3)
month_idx=INDEX(months,date_munged_month)
IF month_idx > 0 THEN
date_month=SUBSTR(months,month_idx+3,2)
/* Checking for a sane month to prevent downloading a corrupted files */
IF INDEX(months,date_month) > 0 THEN DO
date_error=0
date_year=SUBWORD(date_munged,3,1)
date_installed=COMPRESS(date_year date_month date_day)
END
ELSE
date_error=1
return 0
You can rip out what you need, probably just the ca-bundle part...
Great to read that someone has a finger in the odyssey pie!
Is there anyone who can help jaokim on this? :
"For now there's a missing dependency, libicu, in my list, but I’ll try and fix that tonight.
I’ve merged the changes done by the Aros team, and my plan is to have it build, and then try and update to the next revision that the TenFourFox/leopard ppc-safari has a JIT-patch for. I’m however currently stuck on freetype/fontconfig dependency, which I don’t know if the latest libcairo by salass00 has support for (the port only mentions an Amiga font backend)."
Did you ever noticied strange crashes in pthread while using Odyssey ? From time to time (can say almost casually) while browsing a DSI error like occour ... perhaps the special version of "curl" you are used in the compilation chain ? By luck you can skip it and continue to use the program, just a bit annoying
For example i just got this one loading --> www.google.com
Quote:
Crash log for task "pthread id 355" Generated by GrimReaper 53.19 Crash occured in module bsdsocket.library at address 0x6FBCEC54 Type of crash: DSI (Data Storage Interrupt) exception Alert number: 0x80000003
Yeah, I get that pthread crash from time to time. I just kill it and go on. I think it might crash on exit after its done sometimes. Seems quite harmless, but annoying of course.
Software developer for Amiga OS3 and OS4. Develops for OnyxSoft and the Amiga using E and C and occasionally C++
Yes I notices there might be problems with libcurl and having it running as child process, in fact I can't do it on LiveFroIt Music, I guess it's because of how bsdsocket api was designed in OS4 version of roadshow. I ended up writing the download feature as a non-threaded external program, to avoid that horror show.
So in my case main program creates a thread to communicate with external program, a struct with information is provided to the external program, the external program use that information in struct and updates it.
The debug says it tries to store an int16_t value from r3 to address of r9. And r9 was 0x4637C140, not it have been any random value, it possible that memory was corrupted before grim repair detected it. As I have learned it far from built prof. This thing is not safe at all, not in system with minimum memory protection.
Also, there was some progress I do lately: I rebuild the whole beast over GCC 8.2.0 and with fixing some annoying bits I was lucky enough to make it compiles and links (that was a side effect of making preparation for GitHub upload).
Switching to 8.x GCC may give us more speed, as well as give us some warning about things that need to be fixed. It is also some kind of pre-test to porting later 1.25 version from Deadwood's repo.
Binary works, though it did bring me some scary new bug that needs to be sorted out before another beta-release.
New Issue is that for some reason paths in some parts are all trashed now. For example, PROGDIR:Conf/ for saving/loading webicons.db, have "Conf/" trashed with all weird characters of a strange size. Building the same code over GCC 4.4.3 (with some small changes not related to that issue) does not have that bug.
Visually when you start new binary, you have at first no webicons, as they can't be loaded from PROGDIR:Conf/WebPageIcons.db, and instead created a new directory of messed characters in which place new WebPageIcons.db
All I can say about the bug is that it comes from "threads". For example, there is an IconDataBase thread, which creates WebIcons.db. Or the same happens with the "LocalStorage" thread, which saves things too and which "path" is messed now.
As with web icons it easier to trace, I just checked that it loaded from there:
So any actual help (taking into account that all can browse source code already) appreciated!
I was sure at first it's something about "athread=native", but then switching to "athread=single" (so be like old gcc 4.4.3) do not solve the issue, sadly.
Ok, after all we will have all the time to test everything :) I understand your current plan is start working on this baserel some more and then updating to 1.25, so for sure we will have good moments for tests
Any ideas how hard it would be to update the OpenSSL or the Curl being used? Could it be as simple as a rebuild or more involved?
Both are some work for sure, not just "./configure;make". For curl I remember there were issues, like when you use new curl, it didn't work as expected and changes in odyssey's code need to be done. But is there needs for newer curl at all? I mean not every time when new version out is necessary need it?
For OpenSSL, I for sure can understand to be updated, but 1.23r4 from os4depot use v1.0.1q, so not very old IMHO ? But that one should be more or less easer to build, just, as I remember, that also was issues. You may remember that pure ./configure;make wasn't enough when we made test version with it, and MickJt was in need to reconfigure it somehow special so to make all works as need it.
But yes, OpenSSL sure can be more or less easily updated, while Curl needs some work (and in odyssey itself probably too).
Now with source code in github, probabaly any developer may try to experiment with other libs. I put in SDK just those ones which i use for release versions, and which 100% works and tested in few years by users.