| Author | 
  | 
Steady
 
 
  Joined: 11 May 2016 Posts: 2 Location: USA, PHL
  | 
 Posted: Wed 11 May '16 21:04    Post subject: 2.4.20 no OPENSSL_Applink error | 
     | 
 
  | 
 
Hi,
 
 
I haven't used abs in some time but trying to use it in the 2.4.20 release I get 
 
 
OPENSSL_Uplink(000007FEDF828000,08): no OPENSSL_Applink
 
 
Does anyone else experience this error?  I do have httpd running without any issues using mod_ssl.
 
 
Thanks
 
Ed | 
 
  | 
| Back to top | 
 | 
Steffen Moderator
 
  Joined: 15 Oct 2005 Posts: 3131 Location: Hilversum, NL, EU
  | 
 Posted: Thu 12 May '16 11:25    Post subject:  | 
     | 
 
  | 
 
yep same error here. Never tested with the latest OpenSSL versions. Known error with OpenSSL, see https://www.openssl.org/docs/faq.html#PROG2 
 
 
 
 
Please try: 
 
 
Download removed, new abs.exe with Applink is now in 2.4.23+
 
 
Thanks for letting us know ! | 
 
  | 
| Back to top | 
 | 
Steady
 
 
  Joined: 11 May 2016 Posts: 2 Location: USA, PHL
  | 
 Posted: Thu 12 May '16 16:02    Post subject:  | 
     | 
 
  | 
 
Hi Steffen,
 
 
Confirming it works as expected, thanks for that quick fix!
 
 
Ed | 
 
  | 
| Back to top | 
 | 
glsmith Moderator
  
  Joined: 16 Oct 2007 Posts: 2268 Location: Sun Diego, USA
  | 
 Posted: Thu 12 May '16 18:30    Post subject:  | 
     | 
 
  | 
 
Off forum I was told that AH builds suffer the same fate but I cannot duplicate. 
 
 
 	  | Code: | 	 		  c:\Apache24ah-2\bin>abs.exe -n 250 -c 15 -i https://localhost/:443
 
This is ApacheBench, Version 2.3 <$Revision: 1706008 $>
 
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
 
Licensed to The Apache Software Foundation, http://www.apache.org/
 
 
Benchmarking localhost (be patient)
 
Completed 100 requests
 
Completed 200 requests
 
Finished 250 requests | 	  
 
 
So, how do I duplicate this to get the Applink error?
 
 
I have no problem adding the shim if needed but I have yet to see a need since mod_ssl never fails for me (or any of our users as far as I know).
 
 
EDIT: Or is this it?
 
 	  | Code: | 	 		  Benchmarking www.apachehaus.net (be patient)
 
Completed 100 requests
 
SSL read failed (5) - closing connection
 
apr_pollset_add(): Not enough space (12)
 
Total of 184 requests completed | 	 
  | 
 
  | 
| Back to top | 
 | 
glsmith Moderator
  
  Joined: 16 Oct 2007 Posts: 2268 Location: Sun Diego, USA
  | 
 Posted: Fri 13 May '16 15:55    Post subject:  | 
     | 
 
  | 
 
I was using a VC9 build when I tested it first. I am surprised it works without Applink yet VC14 builds do not.
 
 
I also found that if built with LibreSSL it is also not needed even in VC14. | 
 
  | 
| Back to top | 
 | 
Jan-E
 
 
  Joined: 09 Mar 2012 Posts: 1283 Location: Amsterdam, NL, EU
  | 
 Posted: Sat 14 May '16 12:23    Post subject:  | 
     | 
 
  | 
 
openssl/applink.c is only required for VC14. The PHP guys ran into the issue when compiling PHP 7.0.0 Beta 1 switched to using VC14.
 
 
Their original patch is here:
 
http://git.php.net/?p=php-src.git;a=commitdiff;h=3d7343f609b81ebac95d94480a2615df530806e7
 
 
For abs.exe you could use something like this inside the #if defined(HAVE_OPENSSL) block of support/ab.c:
 
 
 	  | Code: | 	 		  # if defined(_MSC_VER) && _MSC_VER >= 1900
 
#  include <openssl/applink.c>
 
# endif
 
 | 	  
 
 
@Steffen: would it be an idea to make sure this patch gets included in the Apache httpd sources? | 
 
  | 
| Back to top | 
 | 
James Blond Moderator
  
  Joined: 19 Jan 2006 Posts: 7443 Location: EU, Germany, Next to Hamburg
  | 
 | 
| Back to top | 
 | 
Jan-E
 
 
  Joined: 09 Mar 2012 Posts: 1283 Location: Amsterdam, NL, EU
  | 
 | 
| Back to top | 
 | 
glsmith Moderator
  
  Joined: 16 Oct 2007 Posts: 2268 Location: Sun Diego, USA
  | 
 Posted: Wed 25 May '16 4:59    Post subject:  | 
     | 
 
  | 
 
| Can I see the patch? | 
 
  | 
| Back to top | 
 | 
Jan-E
 
 
  Joined: 09 Mar 2012 Posts: 1283 Location: Amsterdam, NL, EU
  | 
 Posted: Wed 25 May '16 6:13    Post subject:  | 
     | 
 
  | 
 
YM the patch for ApacheMonitor? Sure. I tested this even yesterday, while compiling httpd with mod_h2 v1.5.6 in all the 6 variants.
 
 
 	  | Code: | 	 		  Index: support/win32/ApacheMonitor.c
 
===================================================================
 
--- support/win32/ApacheMonitor.c   (revision 1745423)
 
+++ support/win32/ApacheMonitor.c   (working copy)
 
@@ -1586,7 +1586,9 @@
 
 #ifdef UNICODE
 
     __wargv = CommandLineToArgvW(GetCommandLineW(), &__argc);
 
 #else
 
+ #if defined(_MSC_VER) && _MSC_VER < 1900
 
     _setargv();
 
+ #endif
 
 #endif
 
 
 
     if ((__argc == 2) && (_tcscmp(__targv[1], _T("--kill")) == 0))
 
 | 	  
 
The patch for fixing the Applink error is here:
 
https://bz.apache.org/bugzilla/attachment.cgi?id=33886&action=diff | 
 
  | 
| Back to top | 
 | 
Steffen Moderator
 
  Joined: 15 Oct 2005 Posts: 3131 Location: Hilversum, NL, EU
  | 
 Posted: Wed 25 May '16 10:02    Post subject:  | 
     | 
 
  | 
 
Jan_E, your proposed patch with abs is:
 
 
+#if defined(_MSC_VER) && _MSC_VER >= 1900
 
+#include <openssl/applink.c>
 
+#endif
 
+
 
 
So applink is included also for ab.exe and when you do not use OpenSSL (like LibreSSL)
 
 
So better to add condition:
 
 
#if defined(HAVE_OPENSSL)
 
#include <openssl/applink.c> | 
 
  | 
| Back to top | 
 | 
Jan-E
 
 
  Joined: 09 Mar 2012 Posts: 1283 Location: Amsterdam, NL, EU
  | 
 Posted: Wed 25 May '16 10:15    Post subject:  | 
     | 
 
  | 
 
@Steffen: the added lines are already inside a block with
 
 
#if defined(HAVE_OPENSSL)
 
 
That block starts at line 159 and ends just after the addition. | 
 
  | 
| Back to top | 
 | 
Steffen Moderator
 
  Joined: 15 Oct 2005 Posts: 3131 Location: Hilversum, NL, EU
  | 
 Posted: Wed 25 May '16 10:34    Post subject:  | 
     | 
 
  | 
 
| I see now. | 
 
  | 
| Back to top | 
 | 
glsmith Moderator
  
  Joined: 16 Oct 2007 Posts: 2268 Location: Sun Diego, USA
  | 
 Posted: Wed 25 May '16 18:45    Post subject:  | 
     | 
 
  | 
 
RE: Your apachemonitor patch, it needs to exclude from VC12 (_MSC_VER < 1800) as well   
 
 
Also, I would like to retain VC6 compat as long as possible, IIRC it has troubles when the # is not the first character of a line but I deal with that if needed next time I build VC6. Anyhow, Apachemonitor is "non-unix, single platform" code and qualifies as CTR in 2.4.
 
 
This has been on my TODO list for awhile now, thanks for the push.
 
Commit to trunk: r1745516
 
Commit to 2.4: r1745517
 
 
I tried every possible way to get the setargv.obj included an no go until I created a static lib from it, then it gladly linked it all. If there's a way to figure out what the location of anyone's VC we could do this during a prebuild step but so far I haven't found a good way to find VC's LIB folder. I have an idea, just haven't tried it yet. | 
 
  | 
| Back to top | 
 | 
Jan-E
 
 
  Joined: 09 Mar 2012 Posts: 1283 Location: Amsterdam, NL, EU
  | 
 Posted: Wed 25 May '16 20:58    Post subject:  | 
     | 
 
  | 
 
@Gregg: could you commit the on-topic patch as well? The one in https://bz.apache.org/bugzilla/show_bug.cgi?id=59630
 
 
W.r.t setargv.obj: I just did a dir *.obj in VC14's lib dir. 24 files, some with intriguing names like notelemetry.obj.
 
There must be a simple way to link those files. A creative use of %lib% or something like that.
 
 
 	  | Code: | 	 		  C:\php-sdk\php70dev>echo %lib%
 
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64; \
 
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\LIB\amd64; \
 
C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x64; \
 
C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x64; \
 
C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x64; | 	 
  | 
 
  | 
| Back to top | 
 | 
glsmith Moderator
  
  Joined: 16 Oct 2007 Posts: 2268 Location: Sun Diego, USA
  | 
 Posted: Thu 26 May '16 0:31    Post subject:  | 
     | 
 
  | 
 
RE: Apachemonitor
 
I think I figured it out. After all I have a pre-build script I use to "do stuff" and it figures out what version of VC I am on and I can use that as a starting point. The Environment is your friend and looking at it again it's even friendlier.
 
 
RE: Applink
 
What about httpd.exe or mod_ssl, whichever? Then again it seems not to need it.
 
 
I would actually prefer to add it to the build than make that change to any .c file. I tried this method recently and it worked fine. This can also be targeted to abs.exe only, which is all that needs it. | 
 
  | 
| Back to top | 
 | 
glsmith Moderator
  
  Joined: 16 Oct 2007 Posts: 2268 Location: Sun Diego, USA
  | 
 Posted: Fri 27 May '16 18:09    Post subject:  | 
     | 
 
  | 
 
I think the problem was I should not have been thinking that day I came up with adding it to the build, then all VC version would get it.   @ myself. 
 
 
Commited to trunk: r1745767
 
Proposed for 2.4: r1745768 | 
 
  | 
| Back to top | 
 | 
glsmith Moderator
  
  Joined: 16 Oct 2007 Posts: 2268 Location: Sun Diego, USA
  | 
 Posted: Tue 14 Jun '16 21:29    Post subject:  | 
     | 
 
  | 
 
| Committed to 2.4 r1748449 | 
 
  | 
| Back to top | 
 | 
Jan-E
 
 
  Joined: 09 Mar 2012 Posts: 1283 Location: Amsterdam, NL, EU
  | 
 Posted: Wed 15 Jun '16 21:45    Post subject:  | 
     | 
 
  | 
 
| But the discussion continues, I see. | 
 
  | 
| Back to top | 
 |