* harbour/include/hbcompdf.h
* harbour/src/compiler/hbmain.c
* save and restore compiler settings when separated .prg files are
compiled as different modules. Files compiled as single module
(i.e. by .clp files, #included, added by DO ... [WITH ...], etc.)
are still compiled using the same settings inheriting any modifications
introduced by #pragma. It's intentional behavior.
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/utils/netiosrv/netiocui.prg
+ RPC command names changed to begin with "hbnetiomgm_" (instead of "netio_")
% Using constants for default ip/port and showing them
dynamically in help screens.
+ Cleaned CUI options now there is simple -addr=<ip[:port]> format
supported.
* CUI option -adminpass= renamed to -pass=.
+ CUI now supports disconnect/connect command on the console.
connect will ask for the password if omitted.
It also means that console can now be in 'disconnected' state.
This will be the mode it starts up when no password is
specced on the cmdline.
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
+ Added 'netio_ping' RPC function.
(utilitzed to detect broken connection. Is there a better way?)
* contrib/hbnetio/utils/netiosrv/netiosrv.hbp
- contrib/hbnetio/utils/netiosrv/netiocmd.prg
+ contrib/hbnetio/utils/netiosrv/netiocui.prg
* Renamed console UI source.
+ Added 'exit' command to console UI, to
simply exit the console.
+ Added detection of lost connection in console UI.
% Deleted NETIO_DISCONNECT() call. Not needed ti
NETIO_GETCONNCETION().
+ Added support for standalone console UI
build mode. Added required entry/cmdline help functions.
+ Added error msg when connection to server management
failed.
+ contrib/hbnetio/utils/netiosrv/netiocui.hbp
+ Added .hbp file for standalone console UI.
* harbour/src/pp/hbpp.c
* modified syntax info to keep output well formatted for 80 columns
* harbour/src/pp/hbpp.1
* updated
* harbour/src/rdd/dbf1.c
* harbour/src/rdd/delim1.c
* harbour/src/rdd/sdf1.c
* harbour/contrib/rddsql/sqlbase.c
! added protection against GPF when wrong field index is passed to
{GET|PUT}VALUE[FILE]() methods
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/utils/netiosrv/netiocmd.prg
+ Help text now show port and iface defaults.
+ Client info is now stored in the connection
table (not used anywhere ATM). Finally solved it by
using thread ID to identify connections in RPC server side.
+ Added thread ID to the per connection data structure.
+ 'show' command now shows thread ID instead of ordinal.
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/utils/netiosrv/netiocmd.prg
! 'netio_logconn()' RPC was returning wrong value.
+ Console UI extended to use NETIO_GETCONNECTION() and
use pConnection to make RPC calls. Which opens the door
to support multiple server connections at the same time.
+ Added experimental code for management client indentification.
Currently the management client will identify itself right
after connection, and this information will be shown on the
server console.
; QUESTION: How to find out in an RPC call on the server side,
which connection it belongs to?
; QUESTION: Should NETIO_DISCONNECT() support optional pConnection
parameter (instead of IP/port pair)?
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/utils/netiosrv/netiocmd.prg
+ Console UI moved to separate thread and it's now fully
contained in netiocmd.prg. The only communication between
console UI and netio server is via remote management RPC
interface.
This means the console UI can be easily removed or moved
to separate executable.
+ Added -noui cmdline option which disables interactive console.
; Little rough around the edges, but it show the capabilities.
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/tests/netiomt1.prg
+ Added 'netio_conninfo' remote mgmnt command.
It will return all client connections in an array of hashes.
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/utils/netiosrv/netiocmd.prg
+ contrib/hbnetio/tests/netiomt1.prg
+ Added secondary server interface for remote management. Little hacky
and incomplete yet.
New options added: -adminport, -adminiface, -adminpass
+ Added remote management function: "netio_shutdown" (similar to 'quit' command)
+ Added 'shconn' and 'noshconn' commands to enable/disable
console feedback when client connects/disconnects.
(this is permanently enabled for management connections)
* contrib/hbnetio/utils/netiosrq/netiosrq.hbp
% Fixed: wrong path.
* contrib/hbnetio/utils/netiosrq/netiosrq.prg
! Adopted: Latest changes in netio_* API.
+ Implemented: Bytes sent and received per connection.
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/utils/netiosrv/netiocmd.prg
+ Added command to enable/disable incoming connections.
(noconn/conn commands)
It makes client crash with read error, so I'm not sure if
this is good solution, or how to solve it better.
* Renamed 'conn' command to 'show'.
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/utils/netiosrv/netiocmd.prg
+ Added command to stop specific or every connection.
Using 'stop <ip:port>' or 'stop all'.
* harbour/src/vm/itemapi.c
* do not clear parameter when NULL item is passed to
hb_itemParamStore*() functions
* harbour/contrib/hbnetio/netiosrv.c
* harbour/contrib/hbnetio/readme.txt
- removed NETIO_SRVSOCKET()
* harbour/ChangeLog
* marked TODO as DONE
* contrib/hbnetio/utils/netiosrv/netiosrv.hbp
! Corrected relative path to hbnetio.hbc
* contrib/hbnetio/hbnetio.hbc
! Added missing incpath option.
* contrib/hbnetio/hbnetio.ch
* contrib/hbnetio/netiosrv.c
! Typo: NETIO_SRVINFO_PEERADDRES -> NETIO_SRVINFO_PEERADDRESS
* contrib/hbnetio/netiosrv.c
- Deleted: NETIO_OPENFILESCOUNT().
; TODO: Pls update netiosrq to use the new interface.
Same for netiosrv. I'll do it in next commit.
* contrib/hbnetio/hbnetio.ch
! Added notice that this .ch file is used also by .c code.
* harbour/include/hbapiitm.h
* harbour/src/vm/itemapi.c
+ added new C function hb_itemParamStoreRelease()
* modified hb_itemParamStore*() functions to accept NULL items
+ harbour/contrib/hbnetio/hbnetio.ch
* harbour/contrib/hbnetio/netio.h
* harbour/contrib/hbnetio/netiosrv.c
* harbour/contrib/hbnetio/readme.txt
+ extended NETIO_SRVSTATUS() function so now it can be used to
extract some additional information about connection socket:
NETIO_SRVSTATUS( <pConnectionSocket>
[, <nStreamID> | <nSrvInfo>, @<xData> ] )
-> <nStatus>
<nSrvInfo> can be:
NETIO_SRVINFO_FILESCOUNT
NETIO_SRVINFO_BYTESSENT
NETIO_SRVINFO_BYTESRECEIVED
NETIO_SRVINFO_PEERADDRES
; TODO: please eliminate NETIO_SRVSOCKET() from any code using it.
It's too danger so I'll remove this function from HBNETIO soon.
NETIO_SRVOPENFILESCOUNT() is also redundant now and can be
replaced by:
NETIO_SRVSTATUS( pConnSock, NETIO_SRVINFO_FILESCOUNT, @nCount )
so it can be removed too.
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/utils/netiosrv/netiocmd.prg
+ Added 'conn' console command to show number of connections
and show information for all connections. The data includes
IP and port, time of connection, no. of open files.
Utilizing some concepts from Pritpal's netiosrq code, but
rewritten, so new code doesn't use STATIC var, it's
little bit more efficient. I didn't implement unfinished
features, like byte counting.
* contrib/hbplist
- contrib/hbnetio/utils/netiosrv/hbnetio.hbp
+ contrib/hbnetio/utils/netiosrv/netiosrv.hbp
* Renamed.
* contrib/hbnetio/netiosrv.c
! Fixed build-stopper typo in this modification:
2011-01-25 12:41 UTC-0800 Pritpal Bedi
I'd like to ask developers to _at least_ do _build test_
before committing to SVN !!!
Obviously this wasn't done for the above commit.
- contrib/hbnetio/utils/netiosrq/netiosrvq.prg
+ contrib/hbnetio/utils/netiosrq/netiosrq.prg
- contrib/hbnetio/utils/netiosrq/netiosrvqt.hbp
+ contrib/hbnetio/utils/netiosrq/netiosrq.hbp
- contrib/hbnetio/utils/netiosrq/netiosrvq.qrc
+ contrib/hbnetio/utils/netiosrq/netiosrq.qrc
- contrib/hbnetio/utils/netiosrq/harbour.ico
! Fixed inconsistent names.
- Deleted Windows specific icon file.
! Fixed long filenames.
+ Added icon for OS/2.
; TOFIX: Build doesn't work due to missing external (CONFIRMBOX).
* contrib/hbhpdf/harupdf.c
+ Added wrapper for HPDF_UseUTFEncodings().
It requires 2.3.0 which is not released yet, so it's also not
the version hosted in Harbour SVN.
* utils/hbmk2/hbmk2.prg
! Minor typo in help text.
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.es_PE.po
+ Updated from source.
* contrib/hbmxml/tests/rem.xml
* contrib/hbmxml/tests/rem_err.xml
! Added missing EOL @ EOF.
* contrib/hbunix/hbposix.h
+ Added generic macro to accept both logical and numeric type for
boolean-like input parameters.
* contrib/hbunix/tests/testdmn.prg
* contrib/hbunix/daemon.c
+ UNIX_DAEMON(): Changed to accept numeric value for logical parameters.
+ UNIX_DAEMON(): Changed to return numeric value.
; Patch by Tamas.
* config/hb_c.cfg
* Changed to align assignments.
! Fixed to align case statments like it's done in Harbour.
* contrib/gtwvg/wvgcuig.c
* contrib/gtwvg/wvgwin.c
* contrib/gtwvg/wvgutils.c
* contrib/gtwvg/wvgcore.c
* contrib/gtwvg/wvgwing.c
* Reformatted with uncrustify.
Results are fantastic with this tool.
+ contrib/hbposix/tests/testdmn.prg
* contrib/hbposix/hbposix.hbp
+ contrib/hbposix/daemon.c
+ Added HB_POSIX_DAEMON( lNoChdir, lNoClose ) --> lResult
* contrib/hbmxml/hbmxmlp.prg
* contrib/hbmagic/hbmagis.prg
* contrib/hbmagic/tests/hbmagit.prg
* contrib/hbmagic/hbmagic.c
! Minor fix to copyright line.
; Patch from Tamas. Thank you!
* contrib/hbposix/tests/testdmn.prg
* contrib/hbposix/daemon.c
* Renamed POSIX_DAEMON() to HB_POSIX_DAEMON() to reflect
fact that it implement higher level posix functionality
(as opposed to being a direct wrapper to posix function
names 'deamon()')
* config/hb_c.cfg
+ Some more settings.
* Changed to not wrap lines at column 100. It'd be great
feature, though sometimes it makes code less readable.
* contrib/gtwvg/wvgcuig.c
* contrib/gtwvg/wvgwin.c
* contrib/gtwvg/wvgutils.c
* contrib/gtwvg/wvgcore.c
* contrib/gtwvg/wvgwing.c
! Fixed formatting using uncrustify.
* contrib/gtwvg/wvggui.c
* Minor modification to make it not break when autoformatted.
* contrib/hbmisc/dates2.c
* contrib/hbtip/encurlc.c
* contrib/hbwin/win_prn2.c
% Optimized out HB_ISLOG() calls.
* harbour/contrib/hbmxml/hbmxml.c
! redesigned to use mxml_node reference counters - it should fix
all problems with memory leak and accessing freed memory which
where in our wrapper.
! fixed few typos and possible GPF I've found
! modified mxmlDelete() wrapper to respect reference counter
It means that it cannot call mxmlDelete() MXML function directly.
- removed mxmlRelease() and mxmlRetain() PRG wrappers
* harbour/contrib/hbmxml/3rd/minixml/mxml_fil.c
! fixed double mxml_node releasing
* harbour/contrib/hbmxml/3rd/minixml/mxml_nod.c
! fixed mxmlDelete() to respect reference counters
; TODO: There are still two problems but inside MXML library.
1. memory leak in testmxml rem_err.xml
The leak is inside MXML function and have to be fixed by author
(I do not want to change this code too deeply). Here is valgrind
report:
(88 direct, 1 indirect) bytes in 1 blocks are definitely lost
at 0x4C234E7: calloc ()
by 0x40ABF9: mxml_new (mxml_nod.c:758)
by 0x40AE39: mxmlNewText (mxml_nod.c:547)
by 0x407421: mxml_load_data (mxml_fil.c:1585)
by 0x404E50: HB_FUN_MXMLLOADFILE (hbmxml.c:794)
by 0x50A9FF6: hb_vmProc (hvm.c:5795)
by 0x5086104: hb_vmExecute (hvm.c:1655)
by 0x50A9FF6: hb_vmProc (hvm.c:5795)
by 0x50ADC12: main (mainstd.c:96)
2. Index functions in MXML library does not update reference counters.
It means that it's possible to create index then remove nodes and
access such nodes extracting their addresses from the index.
It's the only one place I know when user can make sth wrong with
memory using just modified HBMXML wrapper and it cannot be fixed
without modifications in MXML library.
Please test it.
* harbour/contrib/hbnetio/netiomt.prg
+ added 8-th parameter <sSrvFunc> to NETIO_MTSERVER().
It allows to set own server function which can be used for
statistic or connection INIT/EXIT code. By default it's
@netio_server() is used.
User functions may look like:
function custom_netio_server( pConnectionSocket )
register_connection( pConnectionSocket )
begin sequence
netio_server( pConnectionSocket )
finally
unregister_connection( pConnectionSocket )
end sequence
return nil
* harbour/contrib/hbnetio/netiosrv.c
+ added new server function
NETIO_SRVSOCKET( <pConnectionSocket> ) -> <pHbSocket>
<pHbSocket> can be used with Harbour socket functions (hb_socket*())
Please remember that <pHbSocket> handle can be used only for statistics
and must not be used for any send/receive operations.
* harbour/contrib/hbnetio/readme.txt
* updated
* harbour/contrib/hbwin/tests/olesrv1.prg
* modified to return HVM error object as OLE object to the client
on RTE