-
Notifications
You must be signed in to change notification settings - Fork 6.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
rgw: blanket apply NO_SSL_DL to civetweb sections #11689
Conversation
Since civetweb.c is compiled directly into the radosgw executable, NO_SSL_DL needs to also be applied to the radosgw binary. For completeness, also apply it to libcivetweb cxxflags. Fixes: http://tracker.ceph.com/issues/16957 Signed-off-by: Karol Mroz <[email protected]>
Replaces: #10631 |
@cbodley - Targeting Jewel branch directly with this as master focuses on cmake. |
@mdw-at-linuxbox I know you have work-in-progress that also addresses issues in SSL, please review this one as well? tx |
src/civetweb.c should not be built directly as part of radosgw, it should only be built as part of civetweb_common_objs. So it's only necessary to define it there. This is the same place that USE_IPV6 should already be defined. There's no reason to define it globally for radosgw, nor for any c++ file (while civetweb does have c++ support, it's just a front end to the core C code, so no advantage to ceph to use it.) So, besides your problem There is also, So you might want to take a look at my current attempt to solve this, Take a look and let me know what you think! |
I've updated wip-rgw-openssl-4 in github.com/ceph/ceph with an even newer version. |
Thanks for taking a look! Let me address your comments: Regarding civetweb.c. From what I recall in Jewel with autotools, I initially was under the impression that civetweb was an .so linked into rgw and so passed the flag solely there. However the civetweb load_dll() symbol persisted in the rgw executable. From the logs it appeard civetweb.c was indeed getting compiled directly in the rgw executable and thus passing NO_SSL_DL globally was required. Perhaps this has changed since then?
4/5. I've not hit this issue personally. But good to know, thanks. I will have a look into the wip branches you mention when I get a moment. If civetweb.c is truly no longer being compiled directly into the RGW executable, then I agree this blanket apply of NO_SSL_DL would not be needed. Cheers! |
In ceph/cmake, civetweb.c.o is built as part of "civetweb_common_objs", which is a cmake "object library". That in turn gets linked into the radosgw binary with the string "$<TARGET_OBJECTS:civetweb_common_objs>". So in the final radosgw build, you will see "dlopen()". But, since the civetweb.c.o object file was built separately from the rest of the radosgw sources, it actually won't see any flags you set for building radosgw sources, it will only see the flags set for civetweb common objs. You'll definitely also want to have a look at http://tracker.ceph.com/issues/16535 . The PR for that reverts a change that set NO_SSL_DL . Is the SUSE build of ceph using openssl elsewhere and not nss? |
There's some work going on to update civetweb so I updated the ssl patches i had for that: see #11776 ceph/civetweb#15 . |
Ancient, closing. |
Since civetweb.c is compiled directly into the radosgw executable,
NO_SSL_DL needs to also be applied to the radosgw binary. For
completeness, also apply it to libcivetweb cxxflags.
Fixes: http://tracker.ceph.com/issues/16957
Signed-off-by: Karol Mroz [email protected]