Jump to content

Angus Robertson

  • Content Count

  • Joined

  • Last visited

  • Days Won


Angus Robertson last won the day on February 24

Angus Robertson had the most liked content!

Community Reputation

35 Excellent

About Angus Robertson

  • Birthday December 16

Technical Information

  • Delphi-Version
    Delphi 10.3 Rio

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Angus Robertson

    ReceiveFrom blocking

    TWSocket 5.31 goes back 11 years, but ReceiveFrom is essentially the same today. However it is no longer supported. ReceiveFrom is async and returns immediately, it is normally used for UDP only so you know where the data has come from. it is widely used today and does not cause applications to lock up. It sound like you have a continuous loop reading data without any error handling. Angus
  2. Angus Robertson

    Getting the Windows version

    Yes, I see the word video in very small letters buried in a line at the top of the screen, but I read these groups backwards from Unread Content, and you never mentioned you were posting a link to a video in the root post. That would have be sufficient for me to skip this thread, even less time to watch beginners how to program videos . My apologies for wasting your time by posting something useful for other developers. Angus
  3. Angus Robertson

    Getting the Windows version

    Quite correct, no reason to waste time following the links in this thread, but no-one suggested the proper way to get the Windows version, so I did., Or perhaps the thread title is wrong. Angus
  4. Angus Robertson

    Getting the Windows version

    Use RtlGetVersion instead of GetVersionExW which always gives the true operating system. function RtlGetVersion (var lpVersionInformation: TOSVERSIONINFOEXW): DWORD; stdcall; // Windows 2000 and later function RtlGetVersion; external 'ntdll.dll' name 'RtlGetVersion'; OsInfo: TOSVERSIONINFOEXW; RtlGetVersion (OsInfo) Unfortunately Microsoft has not provided any APIs to read the multiple different versions of Windows 10 or Windows Server 2016, so you need to read that from the registry: HCM\Software\Microsoft\Windows NT\CurrentVersion\ReleaseId which will return 1607, 1809 or something similar. \ProductName gives Windows 10 Enterprise or similar, although you work that out from APIs. Angus
  5. Angus Robertson

    Win XP app fails to start -- missing bcrypt.dll

    The choice of using BCryptGenRandom is made at compile time by OpenSSL, so you need to build the binaries yourself for XP or find someone to do it. Windows XP is long out of support, ICS no longer supports it, although it probably still works, we certainly don't test it or care about it. Nor does Microsoft. No idea if bcrypt.dll works on XP, it is probably dependent on other new DLLs. Angus
  6. USE_SSL is defined for the main ICS distribution, since most applications need it today. Angus
  7. Angus Robertson

    Win XP app fails to start -- missing bcrypt.dll

    bcrypt.dll is only used if OpenSSL is compiled for Windows 7 or later, but I'm afraid that is how our binaries are built, since Windows XP is long out of support. You will need to keep using an older version of OpenSSL for Windows XP, or perhaps find binaries built by someone else for Windows XP. ICS will cease supporting OpenSSL older than 1.1.1 from the end of the year, when support ceases, allowing us to remove old redundant code. Angus
  8. Angus Robertson

    ICS registration

    Where did you find that file, it was removed from the distributions 10 years ago when SSL become free? Angus
  9. Angus Robertson

    Hang problem

    If the server is written correctly, it will run for weeks without hanging, despite unfriendly clients and internet issues, and my servers do exactly that. The most likely explanation for hanging is you are ignoring all client socket errors, and writing so much data that the local buffers overflow. Generally, ICS applications are written to send data within the OnDataSent event which is fired when the buffers have space for more data to send, look at the HTTP and FTP client components. There is a property BufferedByteCount that shows unsent data, but you generally don't need to use this when using OnDataSent to send the next block from your stream. Angus
  10. Angus Robertson

    tls-srp with http?

    The latest OpenSSL still lists several SRP ciphers, but they are shown as only supporting SHA1 and SSLv3, neither of which are allowed any longer with TLS, so no idea if they still work. You would need a custom OpenSSL implementation to allow the session password to be specified somewhere, SRP is rarely used. Angus
  11. Angus Robertson


    > Is there a way to know that the TRestOAuth component has updated the authorization token if autoupdate is set?  Use the OnOAuthNewToken event and illustrated in the sample application. Angus
  12. Angus Robertson

    TCP Receiving Binary File

    The user made samples are 15 to 20 years old and few probably work with the latest version of ICS. You should really be looking at OverbyteIcsBinCliDemo.dpr in Samples\delphi\SocketDemos which is more up to date. But still does not use a stream. So perhaps look at a new sample OverbyteIcsIpStmLogTst.dpr in \Samples\delphi\sslinternet which does receive binary streams of unlimited size. Angus
  13. Angus Robertson


    SVN and the overnight zip are updated with a new version of TSslHttpRest heavily rewritten to be more user proof, also need changes to TSslHttpCli which was why it was originally written badly. But now the REST responses are available in both the OnRequestDone and OnRestRequestDone events. Angus
  14. Your earlier changes are already in SVN and the overnight zip, with slight modification, I'll add this change next time. Strangely, I could not find any ICS client samples that test authentication, the BrowserDemo using HtmlViewer did not actually work despite putting up a login dialog box, which I have now fixed. But I've not got NTLM authentication working, sure I set it up many years ago on my IIS server, but can not remember how. Think it might need NT permissions set-up on restricted directories, but I'm hazy on this Angus
  15. Not sure if François is still updating midware, there is nothing newer in SVN. I'll let him answer. Angus