From: Alexander P. <ale...@us...> - 2010-03-24 12:13:16
|
Build Version : T3.0.0.28064 Firebird 3.0 Unstable (writeBuildNum.sh,v 1.28239 2010/03/24 12:13:07 alexpeshkof ) Update of /cvsroot/firebird/firebird2/src/remote In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv22012 Modified Files: inet.cpp protocol.cpp remote.cpp xdr.h xnet.cpp Log Message: Cleanup SUPERCLIENT - and also more generic control for overwritten const cstring Index: inet.cpp =================================================================== RCS file: /cvsroot/firebird/firebird2/src/remote/inet.cpp,v retrieving revision 1.306 retrieving revision 1.307 diff -b -U3 -r1.306 -r1.307 --- inet.cpp 24 Mar 2010 07:50:10 -0000 1.306 +++ inet.cpp 24 Mar 2010 12:13:05 -0000 1.307 @@ -1882,6 +1882,9 @@ // this level rather than try to catch them in all places where // this routine is called +#ifdef DEV_BUILD + main_port->port_receive.x_client = !(main_port->port_flags & PORT_server); +#endif do { if (!xdr_protocol(&main_port->port_receive, packet)) { @@ -2254,6 +2257,9 @@ * **************************************/ +#ifdef DEV_BUILD + port->port_send.x_client = !(port->port_flags & PORT_server); +#endif if (!xdr_protocol(&port->port_send, packet)) return FALSE; @@ -2299,6 +2305,10 @@ } // end scope #endif +#ifdef DEV_BUILD + port->port_send.x_client = !(port->port_flags & PORT_server); +#endif + return xdr_protocol(&port->port_send, packet); } @@ -2437,7 +2447,7 @@ if (!inet_read(xdrs)) return FALSE; -} + } // Scalar values and bulk transfer remainder fall thru // to be moved byte-by-byte to avoid memcpy setup costs. Index: protocol.cpp =================================================================== RCS file: /cvsroot/firebird/firebird2/src/remote/protocol.cpp,v retrieving revision 1.100 retrieving revision 1.101 diff -b -U3 -r1.100 -r1.101 --- protocol.cpp 14 Mar 2010 15:33:06 -0000 1.100 +++ protocol.cpp 24 Mar 2010 12:13:05 -0000 1.101 @@ -911,13 +911,14 @@ // The same function is being used to check P_SGMT & P_DDL. static inline bool_t xdr_cstring_const(XDR* xdrs, CSTRING_CONST* cstring) { -#ifdef SUPERCLIENT #ifdef DEV_BUILD + if (xdrs->x_client) + { const bool cond = !(xdrs->x_op == XDR_DECODE && cstring->cstr_length <= cstring->cstr_allocated && cstring->cstr_allocated); fb_assert(cond); -#endif + } #endif return xdr_cstring(xdrs, reinterpret_cast<CSTRING*>(cstring)); } Index: remote.cpp =================================================================== RCS file: /cvsroot/firebird/firebird2/src/remote/remote.cpp,v retrieving revision 1.96 retrieving revision 1.97 diff -b -U3 -r1.96 -r1.97 --- remote.cpp 24 Mar 2010 07:50:10 -0000 1.96 +++ remote.cpp 24 Mar 2010 12:13:05 -0000 1.97 @@ -299,6 +299,9 @@ { xdrmem_create(&xdr, reinterpret_cast<char*>(packet), sizeof(PACKET), XDR_FREE); xdr.x_public = (caddr_t) port; +#ifdef DEV_BUILD + xdr.x_client = false; +#endif if (partial) { xdr_protocol(&xdr, packet); Index: xdr.h =================================================================== RCS file: /cvsroot/firebird/firebird2/src/remote/xdr.h,v retrieving revision 1.17 retrieving revision 1.18 diff -b -U3 -r1.17 -r1.18 --- xdr.h 29 Sep 2009 19:13:50 -0000 1.17 +++ xdr.h 24 Mar 2010 12:13:05 -0000 1.18 @@ -76,10 +76,16 @@ caddr_t x_private; // pointer to private data caddr_t x_base; // private used for position info int x_handy; // extra private word +#ifdef DEV_BUILD + bool x_client; // set this flag to true if this is client port +#endif public: xdr_t() : x_op(XDR_ENCODE), x_ops(0), x_public(0), x_private(0), x_base(0), x_handy(0) +#ifdef DEV_BUILD + , x_client(false) +#endif { } } XDR; Index: xnet.cpp =================================================================== RCS file: /cvsroot/firebird/firebird2/src/remote/xnet.cpp,v retrieving revision 1.150 retrieving revision 1.151 diff -b -U3 -r1.150 -r1.151 --- xnet.cpp 21 Mar 2010 13:00:12 -0000 1.150 +++ xnet.cpp 24 Mar 2010 12:13:05 -0000 1.151 @@ -1590,6 +1590,10 @@ * **************************************/ +#ifdef DEV_BUILD + main_port->port_receive.x_client = !(main_port->port_flags & PORT_server); +#endif + if (!xdr_protocol(&main_port->port_receive, packet)) packet->p_operation = op_exit; @@ -1611,6 +1615,10 @@ * **************************************/ +#ifdef DEV_BUILD + port->port_send.x_client = !(port->port_flags & PORT_server); +#endif + if (!xdr_protocol(&port->port_send, packet)) return FALSE; @@ -1635,6 +1643,10 @@ * **************************************/ +#ifdef DEV_BUILD + port->port_send.x_client = !(port->port_flags & PORT_server); +#endif + return xdr_protocol(&port->port_send, packet); } |