Giter Site home page Giter Site logo

mozy / mordor Goto Github PK

View Code? Open in Web Editor NEW
343.0 343.0 63.0 5.31 MB

Mordor is a high performance I/O library based on fibers.

Home Page: http://code.mozy.com/projects/mordor

License: BSD 3-Clause "New" or "Revised" License

Shell 1.09% C++ 87.87% C 0.15% CMake 1.69% Makefile 0.54% Batchfile 0.29% M4 5.04% Ragel 3.32%

mordor's People

Contributors

andrewskowronski avatar ccutrer avatar codekitchen avatar gradyplayer avatar jtolio avatar phredqa avatar tchaikov avatar xiaopei-yuan avatar zwily avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mordor's Issues

Spurious issues with errno and fibers

Hi gang,

I experienced a really interesting with some spurious errors with Socket::accept. After scratching my head for weeks I finally figured out what's going on.

I've been seeing random errors like this from my application:

E1106 08:47:24.286124 27054 socket.cpp:777] 0x3089600 accept(12): -1 (0, "Success") 
F1106 08:47:24.289738 27054 scheduler.cpp:427] mordor/socket.cpp(779): Throw in function void Mordor::Socket::accept(Mordor::Socket&) 
Dynamic exception type: boost::exception_detail::clone_impl 
std::exception::what: std::exception 
[Mordor::tag_backtrace*] = /opt/adfin/bin/petabucket(_ZN6Mordor6Socket6acceptERS0_+0xc49) [0xd94279] 
/opt/adfin/bin/petabucket(_ZN6Mordor6Socket6acceptEv+0x83) [0xd97483] 
...
[boost::errinfo_errno_*] = 11, "Resource temporarily unavailable" 
[boost::errinfo_api_function_*] = accept

Notice how the first error printed shows error being as 0 but the throw shows it as being EAGAIN.

Turns out that in Socket::accept when the error value gets assigned from errno. That errno gets evaluated to the old errno of the thread that first running this function before we switched context (via yield) and got switched back.

This is due to how errno is defined on Linux. If you look at the libc headers you'll see this. The macro for errno turns out to be a function call, and the function call is defined as const (http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html) So the compiler is allowed to aggressively cache the return value of that function.

extern int *__errno_location (void) __THROW __attribute__ ((__const__));

#  if !defined _LIBC || defined _LIBC_REENTRANT
/* When using threads, errno is a per-thread value.  */
#   define errno (*__errno_location ())
#  endif
# endif /* !__ASSEMBLER__ */
#endif /* _ERRNO_H */

The reason the exception has the right value is that the throwing of the exception is a few function calls that do not get inlined and call Mordor::getLastError().

We've only experienced this in one place, but this is going be problem for any linux system that performs the following series of calls on a scheduler that uses more the one thread as long as fibers are allowed to migrate among threads. In fact any kind of functions marked with attributes of const or pure will misbehave this way.

error_t error;
error = errno;
Scheduler::yeild();
error = errno;

I'm not sure what to do about this issue.

Thanks,
Milosz

HTTP server crashes if processing requests with protocol major v > 1

I understand that is not meant to process such requests, like
GET / HTTP/4.0
but, the problem is that the server desperately fails into segmentation fault.
This is an example connection to the echoserver from examples:

rakula@nevada ~/play/mordor $ /home/rakula/play/mordor/mordor/examples/.libs/echoserver
terminate called without an active exception
Аварийный останов
rakula@nevada ~/play/mordor $ 

data send here:

nevada rakula # nc 127.0.0.1 8999
GET / HTTP/2.0

nevada rakula # 

As i assume the invalid version should be handled in mordor/http/server.cpp:1249

        if (m_request.requestLine.ver.major != 1) {
            m_requestState = ERROR;
            respondError(shared_from_this(), HTTP_VERSION_NOT_SUPPORTED, "", true);                                  
            return;
        }

an this particular piece of code works fine. it calls respondError, which calls request->finish(), which calls commit() and there we are:

ServerRequest::commit()
...cut...
    MORDOR_ASSERT(m_response.status.ver == Version(1, 0) ||                                                          
           m_response.status.ver == Version(1, 1));

since version is taken from request (if i am getting it right) - it is still "2.0" here, so assertion fails and the program crashes.

probably it should be sane to add something like
m_request.requestLine.ver = Version();
just before calling
respondError(shared_from_this(), HTTP_VERSION_NOT_SUPPORTED, "", true);
from ServerRequest::doRequest()

Asynchronous DNS Lookups

I believe a nice addition to mordor would be an asynchronous DNS resolver backend using C-Ares. The API may need to change slightly to support this.

Thoughts?

Misbehaving SSL clients can force server exit

I found this when using a client based on curl, with a mordor server. If I returned an HTTP response with connection: close set, and also closed the SSLStream by using HTTP::respondError() with closeConnection set to true, then invariably the server would die from a MORDOR_NOTREACHED assertion. If I only set the Connection header and allowed the client to initiate the SSL teartdown then all was well.

I imagine this is a race for initiating the orderly SSL teardown, where one side or the other is missing a "close notify." But it occurs to me that it may be common to find SSL clients that don't implement orderly SSL shutdown at all, and the server should be prepared to deal with a socket disconnect after initiating SSL_shutdown() but prior to receiving the peer's close notify.

    ==== old/mordor/streams/ssl.cpp (text) - new/mordor/streams/ssl.cpp (text) ==== content
    @@ -284,6 +284,12 @@
                             << "): " << result << " (" << error << ")";
                         break;
                     }
    +                               else
    +                               {
    +                                       MORDOR_LOG_WARNING(g_log) << this << " SSL_shutdown(" << m_ssl.get()
    +                                               << "): " << result << " (" << error << ") Peer disconnected without sending close_notify";
    +                                       goto SSLStream_close_final;
    +                               }
                     MORDOR_NOTREACHED();
                 case SSL_ERROR_SSL:
                     {
    @@ -300,7 +306,8 @@
             }
             break;
         }
    -    parent()->close();
    +SSLStream_close_final:
    +       parent()->close();
     }

     size_t

Race condition in Windows service portion of Mordor::daemon

Hi,

I believe there is a race condition for validity of the ServiceStatus instance declared on the stack of ServiceMain() in daemon.cpp. Both HandlerEx() and ServiceMain() access this memory, but HandlerEx() is called in the context of a different thread than ServiceMain(), and it is entirely possible for ServiceMain() to return, and thus move the stack pointer below the status instance, before HandlerEx() attempts to use or modify that memory.

This was sometimes throwing exceptions for me during service shutdown. As a workaround, I declared 'status' as static.

build failed on snow leopard

Bo-Xiaos-MacBook-Pro:mordor xiaobo$ buildtools/build.sh
glibtoolize: putting auxiliary files in .'. glibtoolize: copying file./ltmain.sh'
glibtoolize: putting macros in AC_CONFIG_MACRO_DIR, m4'. glibtoolize: copying filem4/libtool.m4'
glibtoolize: copying file m4/ltoptions.m4' glibtoolize: copying filem4/ltsugar.m4'
glibtoolize: copying file m4/ltversion.m4' glibtoolize: copying filem4/lt~obsolete.m4'
configure.ac:7: installing ./config.sub' configure.ac:6: installing./missing'
configure.ac:6: installing ./install-sh' configure.ac:7: installing./config.guess'
Makefile.am: installing ./depcomp' checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... ./install-sh -c -d checking for gawk... no checking for mawk... no checking for nawk... no checking for awk... awk checking whether make sets $(MAKE)... yes checking build system type... i386-apple-darwin10.7.0 checking host system type... i386-apple-darwin10.7.0 checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /usr/bin/sed checking for grep that handles long lines and -e... /usr/bin/grep checking for egrep... /usr/bin/grep -E checking for fgrep... /usr/bin/grep -F checking for ld used by gcc... /usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld checking if the linker (/usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld) is GNU ld... no checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm checking the name lister (/usr/bin/nm) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 196608 checking whether the shell understands some XSI constructs... yes checking whether the shell understands "+="... yes checking for /usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld option to reload object files... -r checking how to recognize dependent libraries... pass_all checking for ar... ar checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm output from gcc object... ok checking for dsymutil... dsymutil checking for nmedit... nmedit checking for lipo... lipo checking for otool... otool checking for otool64... no checking for -single_module linker flag... yes checking for -exported_symbols_list linker flag... yes checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fno-common -DPIC checking if gcc PIC flag -fno-common -DPIC works... yes checking if gcc static flag -static works... no checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld) supports shared libraries... yes checking dynamic linker characteristics... darwin10.7.0 dyld checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... no checking whether to build static libraries... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking whether we are using the GNU C++ compiler... (cached) yes checking whether g++ accepts -g... (cached) yes checking dependency style of g++... (cached) gcc3 checking how to run the C++ preprocessor... g++ -E checking for ld used by g++... /usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld checking if the linker (/usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld) is GNU ld... no checking whether the g++ linker (/usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld) supports shared libraries... yes checking for g++ option to produce PIC... -fno-common -DPIC checking if g++ PIC flag -fno-common -DPIC works... yes checking if g++ static flag -static works... no checking if g++ supports -c -o file.o... yes checking if g++ supports -c -o file.o... (cached) yes checking whether the g++ linker (/usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld) supports shared libraries... yes checking dynamic linker characteristics... darwin10.7.0 dyld checking how to hardcode library paths into programs... immediate checking for gawk... (cached) awk checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for ragel... /usr/local/bin/ragel checking for protoc... protoc checking for library containing pthread_create... none required checking for library containing clock_gettime... no checking for library containing backtrace... none required checking for pkg-config... /usr/local/bin/pkg-config checking whether compiling and linking against OpenSSL works... yes checking if zlib is wanted... yes checking for inflateEnd in -lz... yes checking zlib.h usability... yes checking zlib.h presence... yes checking for zlib.h... yes checking for inflateEnd in -lz... (cached) yes checking zlib in /usr... ok checking for boostlib >= 1.40... yes checking whether the Boost::Program_Options library is available... yes checking for exit in -lboost_program_options-mt... yes checking whether the Boost::Regex library is available... yes checking for exit in -lboost_regex-mt... yes checking whether the Boost::Thread library is available... yes checking for exit in -lboost_thread-mt... yes checking for CFNetworkCopyProxiesForURL... yes checking for CFRetain... yes checking for SecKeychainItemFreeContent... yes checking for SCDynamicStoreCreate... yes checking for yaml_parser_initialize in -lyaml... no checking pkg-config is at least version 0.9.0... yes checking for PROTOBUF... yes checking fcntl.h usability... yes checking fcntl.h presence... yes checking for fcntl.h... yes checking netdb.h usability... yes checking netdb.h presence... yes checking for netdb.h... yes checking netinet/in.h usability... yes checking netinet/in.h presence... yes checking for netinet/in.h... yes checking stddef.h usability... yes checking stddef.h presence... yes checking for stddef.h... yes checking for stdint.h... (cached) yes checking for stdlib.h... (cached) yes checking for string.h... (cached) yes checking sys/socket.h usability... yes checking sys/socket.h presence... yes checking for sys/socket.h... yes checking sys/time.h usability... yes checking sys/time.h presence... yes checking for sys/time.h... yes checking syslog.h usability... yes checking syslog.h presence... yes checking for syslog.h... yes checking whether to enable assertions... no checking for stdbool.h that conforms to C99... yes checking for _Bool... yes checking for inline... inline checking for int32_t... yes checking for int64_t... yes checking for pid_t... yes checking for size_t... yes checking for uint16_t... yes checking for uint32_t... yes checking for uint64_t... yes checking for ptrdiff_t... yes checking for error_at_line... no checking whether sys/types.h defines makedev... yes checking for stdlib.h... (cached) yes checking for unistd.h... (cached) yes checking for getpagesize... yes checking for working mmap... yes checking for working strtod... yes checking for clock_gettime... no checking for ftruncate... yes checking for memchr... yes checking for memmove... yes checking for memset... yes checking for munmap... yes checking for rmdir... yes checking for socket... yes checking for strchr... yes checking for strstr... yes checking for strtoull... yes configure: creating ./config.status config.status: creating Makefile config.status: creating mordor/libmordor.pc config.status: creating mordor/libmordorprotobuf.pc config.status: creating mordor/libmordoryaml.pc config.status: creating mordor/pq/libmordorpq.pc config.status: creating mordor/test/libmordortest.pc config.status: creating config.h config.status: executing depfiles commands config.status: executing libtool commands g++ -DHAVE_CONFIG_H -pthread -I/usr/local/include -I. -I/usr/include -Wall -Werror -fno-strict-aliasing -g -O2 -x c++-header mordor/pch.h -o mordor/pch.h.gch /usr/local/bin/ragel -C mordor/http/http_parser.rl -o mordor/http/http_parser.cpp /usr/local/bin/ragel -C mordor/json.rl -o mordor/json.cpp /usr/local/bin/ragel -C mordor/uri.rl -o mordor/uri.cpp /usr/local/bin/ragel -C mordor/xml/xml_parser.rl -o mordor/xml/xml_parser.cpp /bin/sh ./libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -I/usr/local/Cellar/protobuf/2.4.1/include -pthread -I/usr/local/include -I. -I/usr/include -Wall -Werror -fno-strict-aliasing -g -O2 -MT mordor/mordor_libmordorprotobuf_la-protobuf.lo -MD -MP -MF mordor/.deps/mordor_libmordorprotobuf_la-protobuf.Tpo -c -o mordor/mordor_libmordorprotobuf_la-protobuf.lotest -f 'mordor/protobuf.cpp' || echo './'mordor/protobuf.cpp libtool: compile: g++ -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -I/usr/local/Cellar/protobuf/2.4.1/include -pthread -I/usr/local/include -I. -I/usr/include -Wall -Werror -fno-strict-aliasing -g -O2 -MT mordor/mordor_libmordorprotobuf_la-protobuf.lo -MD -MP -MF mordor/.deps/mordor_libmordorprotobuf_la-protobuf.Tpo -c mordor/protobuf.cpp -o mordor/mordor_libmordorprotobuf_la-protobuf.o depbase=echo mordor/test/antxmllistener.lo | sed 's|[^/]*$|.deps/&|;s|.lo$||'`;
/bin/sh ./libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -pthread -I/usr/local/include -I. -I/usr/include -Wall -Werror -fno-strict-aliasing -g -O2 -MT mordor/test/antxmllistener.lo -MD -MP -MF $depbase.Tpo -c -o mordor/test/antxmllistener.lo mordor/test/antxmllistener.cpp &&
mv -f $depbase.Tpo $depbase.Plo
libtool: compile: g++ -DHAVE_CONFIG_H -pthread -I/usr/local/include -I. -I/usr/include -Wall -Werror -fno-strict-aliasing -g -O2 -MT mordor/test/antxmllistener.lo -MD -MP -MF mordor/test/.deps/antxmllistener.Tpo -c mordor/test/antxmllistener.cpp -o mordor/test/antxmllistener.o
In file included from ./mordor/predef.h:4,
from ./mordor/exception.h:5,
from ./mordor/assert.h:5,
from mordor/protobuf.cpp:8:
./mordor/version.h:21:1: error: "BSD" redefined
In file included from /usr/local/Cellar/protobuf/2.4.1/include/google/protobuf/io/coded_stream.h:124,
from /usr/local/Cellar/protobuf/2.4.1/include/google/protobuf/message_lite.h:43,
from /usr/local/Cellar/protobuf/2.4.1/include/google/protobuf/message.h:122,
from mordor/protobuf.cpp:6:
/usr/include/sys/param.h:72:1: error: this is the location of the previous definition

make: *** [mordor/mordor_libmordorprotobuf_la-protobuf.lo] Error 1
make: *** Waiting for unfinished jobs....

Log attached.

Handling of ERROR_BUFFER_OVERFLOW in Address::getInterfaceAddresses

The current implementation uses a fixed size stack buffer, the same size recommended by MSDN documentation for GetAdapterAddresses(). In some environments this is insufficient and will cause the function to fail, even though it could be recovered. This patch uses a vector for storing the results, and will resize once to handle the first ERROR_BUFFER_OVERFLOW returned. Diff is vs. 1.4

This should work regardless of the number of interfaces installed, but you could argue it's a little ugly, and there's no enforcement on a maximum allowable resize in case GetAdapterAddresses() or GetAdapatersInfo() returns something hinky.

Compilation failed on Ubuntu 14.04

Hello,

I've just tried to build mordor on Ubuntu 14.04 and I'm getting that error:

...
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: error: cannot find input file: Makefile.in' make: *** No rule to make targetcheck'. Stop.

All I did was installing Ragel and Autoconf then run ./buildtools/build.sh

Did I do something wrong?

Thundering herd of ET mode may lead to race condition

IOManager has only one m_epfd. epoll_wait are run in multiple 'Scheduler::run' threads.
Consider that situation:
IOManager(2). That means two 'Scheduler::run' threads.
Assume that A fd is triggered, and fd's fiber will schedule into thread 1.
At same time fd's ep_poll_callback called. That may lead to the fd triggered again when thread 2 is waitting. If the fd schedule into thread 2, That may lead race condition. How to avoid this?

OpenSSL 1.1.0 Compatibility

The openssl project underwent significant change from 1.0.2 -> 1.1.0 and one of the most visible is that types are now opaque:
openssl/openssl#962 (comment)

After sorting through some initial compile failures (SHA_INIT -> SHA1_INIT, etc), we encounter the same error described in the the initial issue report, above: openssl/openssl#962

vagrant@ubuntu-bionic:~/build$ make
Scanning dependencies of target mordor
[  0%] Building CXX object mordor/CMakeFiles/mordor.dir/zip.cpp.o
[  1%] Building CXX object mordor/CMakeFiles/mordor.dir/http/auth.cpp.o
[  1%] Building CXX object mordor/CMakeFiles/mordor.dir/http/basic.cpp.o
[  2%] Building CXX object mordor/CMakeFiles/mordor.dir/http/broker.cpp.o
[  3%] Building CXX object mordor/CMakeFiles/mordor.dir/http/chunked.cpp.o
[  3%] Building CXX object mordor/CMakeFiles/mordor.dir/http/client.cpp.o
[  4%] Building CXX object mordor/CMakeFiles/mordor.dir/http/connection.cpp.o
[  5%] Building CXX object mordor/CMakeFiles/mordor.dir/http/digest.cpp.o
[  5%] Building CXX object mordor/CMakeFiles/mordor.dir/http/http.cpp.o
[  6%] Building CXX object mordor/CMakeFiles/mordor.dir/http/multipart.cpp.o
[  6%] Building CXX object mordor/CMakeFiles/mordor.dir/http/oauth.cpp.o
[  7%] Building CXX object mordor/CMakeFiles/mordor.dir/http/oauth2.cpp.o
[  8%] Building CXX object mordor/CMakeFiles/mordor.dir/http/proxy.cpp.o
[  8%] Building CXX object mordor/CMakeFiles/mordor.dir/http/server.cpp.o
[  9%] Building CXX object mordor/CMakeFiles/mordor.dir/http/servlet.cpp.o
[ 10%] Building CXX object mordor/CMakeFiles/mordor.dir/http/servlets/config.cpp.o
[ 10%] Building CXX object mordor/CMakeFiles/mordor.dir/streams/buffer.cpp.o
[ 11%] Building CXX object mordor/CMakeFiles/mordor.dir/streams/buffered.cpp.o
[ 11%] Building CXX object mordor/CMakeFiles/mordor.dir/streams/cat.cpp.o
[ 12%] Building CXX object mordor/CMakeFiles/mordor.dir/streams/counter.cpp.o
[ 13%] Building CXX object mordor/CMakeFiles/mordor.dir/streams/crypto.cpp.o
In file included from /home/vagrant/mordor/mordor/streams/crypto.cpp:1:0:
/home/vagrant/mordor/mordor/streams/crypto.h:74:20: error: field ‘m_ctx’ has incomplete type ‘EVP_CIPHER_CTX {aka evp_cipher_ctx_st}’
     EVP_CIPHER_CTX m_ctx;
                    ^~~~~
In file included from /usr/include/openssl/crypto.h:31:0,
                 from /usr/include/openssl/bio.h:20,
                 from /home/vagrant/mordor/mordor/pch.h:119,
                 from <command-line>:0:
/usr/include/openssl/ossl_typ.h:90:16: note: forward declaration of ‘EVP_CIPHER_CTX {aka struct evp_cipher_ctx_st}’
 typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX;
                ^~~~~~~~~~~~~~~~~
mordor/CMakeFiles/mordor.dir/build.make:1138: recipe for target 'mordor/CMakeFiles/mordor.dir/streams/crypto.cpp.o' failed
make[2]: *** [mordor/CMakeFiles/mordor.dir/streams/crypto.cpp.o] Error 1
CMakeFiles/Makefile2:95: recipe for target 'mordor/CMakeFiles/mordor.dir/all' failed
make[1]: *** [mordor/CMakeFiles/mordor.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
vagrant@ubuntu-bionic:~/build$

OpenSSL 1.0.2 reaches end-of-life on 2019-12-31 (openssl/openssl#962 (comment)). Are there plans/roadmap to update Mordor to account for this?

Build failure on linux, gcc 4.6

make  all-am
make[1]: Entering directory `/home/babali/develop/mordor'
/bin/sh ./libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H   -I. -include mordor/pch.h  -pthread -I/usr/include -I/usr/include -I. -I/usr/include -Wall -Werror -fno-strict-aliasing -g -O2 -MT mordor/streams/mordor_libmordor_la-ssl.lo -MD -MP -MF mordor/streams/.deps/mordor_libmordor_la-ssl.Tpo -c -o mordor/streams/mordor_libmordor_la-ssl.lo `test -f 'mordor/streams/ssl.cpp' || echo './'`mordor/streams/ssl.cpp
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -include mordor/pch.h -pthread -I/usr/include -I/usr/include -I. -I/usr/include -Wall -Werror -fno-strict-aliasing -g -O2 -MT mordor/streams/mordor_libmordor_la-ssl.lo -MD -MP -MF mordor/streams/.deps/mordor_libmordor_la-ssl.Tpo -c mordor/streams/ssl.cpp -o mordor/streams/mordor_libmordor_la-ssl.o
mordor/streams/ssl.cpp: In member function ‘virtual void Mordor::SSLStream::flush(bool)’:
mordor/streams/ssl.cpp:441:9: error: variable ‘dummy’ set but not used [-Werror=unused-but-set-variable]
cc1plus: all warnings being treated as errors

make[1]: *** [mordor/streams/mordor_libmordor_la-ssl.lo] Error 1
/bin/sh ./libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H   -I. -include mordor/pch.h  -pthread -I/usr/include -I/usr/include -I. -I/usr/include -Wall -Werror -fno-strict-aliasing -g -O2 -MT mordor/streams/mordor_libmordor_la-zlib.lo -MD -MP -MF mordor/streams/.deps/mordor_libmordor_la-zlib.Tpo -c -o mordor/streams/mordor_libmordor_la-zlib.lo `test -f 'mordor/streams/zlib.cpp' || echo './'`mordor/streams/zlib.cpp
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -include mordor/pch.h -pthread -I/usr/include -I/usr/include -I. -I/usr/include -Wall -Werror -fno-strict-aliasing -g -O2 -MT mordor/streams/mordor_libmordor_la-zlib.lo -MD -MP -MF mordor/streams/.deps/mordor_libmordor_la-zlib.Tpo -c mordor/streams/zlib.cpp -o mordor/streams/mordor_libmordor_la-zlib.o
mordor/streams/zlib.cpp: In member function ‘virtual size_t Mordor::ZlibStream::read(Mordor::Buffer&, size_t)’:
mordor/streams/zlib.cpp:153:16: error: variable ‘avail_in’ set but not used [-Werror=unused-but-set-variable]
cc1plus: all warnings being treated as errors

make[1]: *** [mordor/streams/mordor_libmordor_la-zlib.lo] Error 1
make[1]: Target `all-am' not remade because of errors.
make[1]: Leaving directory `/home/babali/develop/mordor'
make: *** [all] Error 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.