From be373b88b9647f9e65f33b2b2092531148335081 Mon Sep 17 00:00:00 2001 From: Spoike Date: Fri, 24 Aug 2018 00:35:16 +0000 Subject: [PATCH] Fix some annoying stuff. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5300 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- CMakeLists.txt | 5 ++++- engine/Makefile | 4 ++-- engine/common/fs.c | 4 ++-- engine/common/net_ssl_gnutls.c | 14 +++++++++++++- engine/common/net_wins.c | 17 ++++++++++++++--- engine/server/sv_ccmds.c | 5 +++-- engine/server/sv_mvd.c | 4 ++-- engine/server/sv_send.c | 3 ++- 8 files changed, 42 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b8839c6bd..307c448ff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,8 @@ #Public builds are still built using the (overcomplicated) traditional (g)makefile. CMAKE_MINIMUM_REQUIRED(VERSION 3.0) +cmake_policy(SET CMP0063 NEW) + PROJECT(fteqw) INCLUDE_DIRECTORIES( @@ -75,6 +77,7 @@ ELSE() SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_X11) ENDIF() +SET(OpenGL_GL_PREFERENCE LEGACY) FIND_PACKAGE(OpenGL) IF(NOT OpenGL_FOUND) MESSAGE(WARNING "opengl library NOT available. Will depend upon vulkan.") @@ -581,7 +584,7 @@ IF (${BULLET_FOUND}) ENDIF() #ODE Physics library plugin -FIND_PACKAGE(ode) +#FIND_PACKAGE(ode) IF (${ODE_FOUND}) ADD_LIBRARY(ode MODULE plugins/qvm_api.c diff --git a/engine/Makefile b/engine/Makefile index d95945eaf..5655f95cb 100644 --- a/engine/Makefile +++ b/engine/Makefile @@ -1620,8 +1620,8 @@ BASELDFLAGS:=-L$(ARCHLIBS) $(BASELDFLAGS) .default: help all: rel -rel: sv-rel gl-rel mingl-rel -dbg: sv-dbg gl-dbg mingl-dbg +rel: sv-rel m-rel mingl-rel qcc-rel +dbg: sv-dbg m-dbg mingl-dbg qcc-dbg relcl: glcl-rel mcl-rel profile: sv-profile gl-profile mingl-profile diff --git a/engine/common/fs.c b/engine/common/fs.c index efc8bc69a..5d9da479e 100644 --- a/engine/common/fs.c +++ b/engine/common/fs.c @@ -2667,7 +2667,7 @@ static void FS_AddDataFiles(searchpath_t **oldpaths, const char *purepath, const } } - PM_LoadPackages(oldpaths, purepath, logicalpaths, search, loadstuff, 1000, 0x7fffffff); + PM_LoadPackages(oldpaths, purepath, logicalpaths, search, loadstuff, 1000, 0x7ffffffe); } static searchpath_t *FS_AddPathHandle(searchpath_t **oldpaths, const char *purepath, const char *logicalpath, searchpathfuncs_t *handle, const char *prefix, unsigned int flags, unsigned int loadstuff) @@ -3056,7 +3056,7 @@ void COM_Gamedir (const char *dir, const struct gamepacks *packagespaths) #endif /*quake requires a few settings for compatibility*/ -#define EZQUAKECOMPETITIVE "set ruleset_allow_fbmodels 1\n" +#define EZQUAKECOMPETITIVE "set ruleset_allow_fbmodels 1\nset sv_demoExtensions \"\"\n" #define QRPCOMPAT "set cl_cursor_scale 0.2\nset cl_cursor_bias_x 7.5\nset cl_cursor_bias_y 0.8" #define QCFG "set com_parseutf8 0\nset allow_download_refpackages 0\nset sv_bigcoords \"\"\nmap_autoopenportals 1\n" "sv_port "STRINGIFY(PORT_QWSERVER)" "STRINGIFY(PORT_NQSERVER)"\n" ZFIXHACK EZQUAKECOMPETITIVE QRPCOMPAT //nehahra has to be weird with extra cvars, and buggy fullbrights. diff --git a/engine/common/net_ssl_gnutls.c b/engine/common/net_ssl_gnutls.c index b712793f0..3743cba46 100644 --- a/engine/common/net_ssl_gnutls.c +++ b/engine/common/net_ssl_gnutls.c @@ -97,7 +97,9 @@ typedef int (VARGS gnutls_certificate_verify_function)(gnutls_session_t session) #else #include - #include + #if GNUTLS_VERSION_MAJOR >= 3 + #include + #endif #include #if GNUTLS_VERSION_MAJOR >= 3 && defined(HAVE_DTLS) #include @@ -130,6 +132,7 @@ typedef int (VARGS gnutls_certificate_verify_function)(gnutls_session_t session) #endif #endif +#if GNUTLS_VERSION_MAJOR >= 3 #if GNUTLS_VERSION_MAJOR >= 3 #define GNUTLS_HAVE_SYSTEMTRUST #endif @@ -1329,5 +1332,14 @@ const dtlsfuncs_t *GNUDTLS_InitClient(void) } #endif +#else +#warning "GNUTLS version is too old (3.0+ required). Please clean and then recompile with CFLAGS=-DNO_GNUTLS" + +qboolean SSL_InitGlobal(qboolean isserver) {return false;} +vfsfile_t *FS_OpenSSL(const char *hostname, vfsfile_t *source, qboolean isserver) {return NULL;} +int TLS_GetChannelBinding(vfsfile_t *vf, qbyte *binddata, size_t *bindsize) {return -1;} +const dtlsfuncs_t *GNUDTLS_InitClient(void) {return NULL;} +const dtlsfuncs_t *GNUDTLS_InitServer(void) {return NULL;} +#endif #endif diff --git a/engine/common/net_wins.c b/engine/common/net_wins.c index f4087147c..210eba226 100644 --- a/engine/common/net_wins.c +++ b/engine/common/net_wins.c @@ -2983,6 +2983,7 @@ neterr_t FTENET_Datagram_SendPacket(ftenet_generic_connection_t *con, int length ret = sendto (con->thesocket, data, length, 0, (struct sockaddr*)&addr, size ); if (ret == -1) { + const char *prot; int ecode = neterrno(); // wouldblock is silent if (ecode == NET_EWOULDBLOCK) @@ -3000,15 +3001,25 @@ neterr_t FTENET_Datagram_SendPacket(ftenet_generic_connection_t *con, int length return NETERR_DISCONNECTED; } + //network is unreachable scares the socks off people when IPv6 is non-functional despite ipv4 working fine. + //name the problem protocol in the error message. + switch(to->type) + { + case NA_IP: prot = "IPv4"; break; + case NA_IPV6: prot = "IPv6"; break; + case NA_IPX: prot = "IPX"; break; + default: prot = ""; break; + } + #ifndef SERVERONLY if (ecode == NET_EADDRNOTAVAIL) - Con_DPrintf("NET_SendPacket Warning: %i\n", ecode); + Con_DPrintf("NET_Send%sPacket Warning: %i\n", prot, ecode); else #endif #ifdef _WIN32 - Con_TPrintf ("NET_SendPacket ERROR: %i\n", ecode); + Con_TPrintf ("NET_Send%sPacket ERROR: %i\n", prot, ecode); #else - Con_TPrintf ("NET_SendPacket ERROR: %s\n", strerror(ecode)); + Con_TPrintf ("NET_Send%sPacket ERROR: %s\n", prot, strerror(ecode)); #endif } else if (ret < length) diff --git a/engine/server/sv_ccmds.c b/engine/server/sv_ccmds.c index f0392d1fa..bbf90abc1 100644 --- a/engine/server/sv_ccmds.c +++ b/engine/server/sv_ccmds.c @@ -1862,6 +1862,7 @@ static void SV_Status_f (void) int columns = 80; extern cvar_t sv_listen_qw; + extern cvar_t net_enable_tls, net_enable_http, net_enable_webrtcbroker, net_enable_websockets, net_enable_qizmo, net_enable_qtv; #ifdef NQPROT extern cvar_t sv_listen_nq, sv_listen_dp; #endif @@ -1935,7 +1936,7 @@ static void SV_Status_f (void) else if (net_enable_dtls.ival) Con_Printf(" DTLS"); #endif - /*if (net_enable_tls.ival) + if (net_enable_tls.ival) Con_Printf(" TLS"); if (net_enable_http.ival) Con_Printf(" HTTP"); @@ -1946,7 +1947,7 @@ static void SV_Status_f (void) if (net_enable_qizmo.ival) Con_Printf(" QZ"); if (net_enable_qtv.ival) - Con_Printf(" QTV");*/ + Con_Printf(" QTV"); Con_Printf("\n"); break; } diff --git a/engine/server/sv_mvd.c b/engine/server/sv_mvd.c index bb9867b3d..44f24ef27 100644 --- a/engine/server/sv_mvd.c +++ b/engine/server/sv_mvd.c @@ -41,7 +41,7 @@ cvar_t sv_demofps = CVAR("sv_demofps", "30"); cvar_t sv_demoPings = CVARD("sv_demoPings", "10", "Interval between ping updates in mvds"); cvar_t sv_demoMaxSize = CVARD("sv_demoMaxSize", "", "Demos will be truncated to be no larger than this size."); cvar_t sv_demoExtraNames = CVAR("sv_demoExtraNames", ""); -cvar_t sv_demoExtensions = CVARD("sv_demoExtensions", "", "Enables protocol extensions within MVDs. This will cause older/non-fte clients to error upon playback.\n0: off.\n1: all extensions.\n2: extensions also supported by a certain other engine."); +cvar_t sv_demoExtensions = CVARD("sv_demoExtensions", "1", "Enables protocol extensions within MVDs. This will cause older/non-fte clients to error upon playback.\n0: off.\n1: all extensions.\n2: extensions also supported by a certain other engine."); cvar_t sv_demoAutoCompress = CVARD("sv_demoAutoCompress", "", "Specifies whether to compress demos as they're recorded.\n0 = no compression.\n1 = gzip compression."); cvar_t sv_demo_write_csqc = CVARD("sv_demo_write_csqc", "", "Writes a copy of the csprogs into recorded demos. This ensures that the demo can be played back despite future gamecode changes."); @@ -1577,7 +1577,7 @@ qboolean SV_MVD_Record (mvddest_t *dest) demo.datagram.prim = demo.recorder.netchan.netprim; if (sv_demoExtensions.ival == 2 || !*sv_demoExtensions.string) - { /*more limited subset supported by ezquake*/ + { /*more limited subset supported by ezquake, but not fuhquake/fodquake. sorry.*/ demo.recorder.fteprotocolextensions = /*PEXT_CHUNKEDDOWNLOADS|*/PEXT_256PACKETENTITIES|/*PEXT_FLOATCOORDS|*/PEXT_MODELDBL|PEXT_ENTITYDBL|PEXT_ENTITYDBL2|PEXT_SPAWNSTATIC2; // demo.recorder.fteprotocolextensions |= PEXT_HLBSP; /*ezquake DOES have this, but it is pointless and should have been in some feature mask rather than protocol extensions*/ // demo.recorder.fteprotocolextensions |= PEXT_ACCURATETIMINGS; /*ezquake does not support this any more*/ diff --git a/engine/server/sv_send.c b/engine/server/sv_send.c index fb67e3fa4..73791a211 100644 --- a/engine/server/sv_send.c +++ b/engine/server/sv_send.c @@ -3665,7 +3665,8 @@ void SV_SendClientMessages (void) } c->lastoutgoingphysicstime = sv.world.physicstime; } - + if (sv.mvdrecording) + SV_ProcessSendFlags(&demo.recorder); SV_CleanupEnts(); }