01: Currently the NetMail agents signal handling for SIGHUP is not fully implemented. We need to establish uniform signal handling for SIGHUP, SIGUSR1 and SIGUSR2 as appropriate. 02: An MDBPAM driver would be more appropriate than the simple MDBFIle driver. 03: The MDBFile driver is not multi-app multi-thread safe for read and write access. 04: The anti-virus agent needs to use an open source anti-virus engine as an example. 05: Add backwards API compatibility for old SDK based components. 06: Instrument use of OpenLDAP in place of our old LDAP library. 07: Run as non-root user. 08: src/agents/nmap/nmapc.h is empty 09: The managed client library needs to use the connection manager library. 10: We need to identify and resolve 'fixme' comments. 10: The connection management library needs: a: exclusive BUFSIZE defintion as it is defined in most private header files. b: exclusive MTU definition as it is defined in most private header files. 11: Source code scrubbing definition: : DOS2Unix the source and make files. : Replace TAB characters with 4 spaces. : Ensure that the first directive in the source files is: #include : Replace BUFSIZE with CONN_BUFSIZE as defined in connio.h : Remove BUFSIZE definitions from source files. : Replace MTU with CONN_TCP_MTU as defined in connio.h : Remove MTU definitions from source files. : Remove NMLOGID_H_NEED_LOGGING_KEY and NMLOGID_H_NEED_LOGGING_CERT as they are now handled by the logging library. : Re-format the source files. : Defines should be grouped together; preferrable in the private header file as appropriate. : The ChopNL macro is repeatedly defined; this definition exists in connio.h as CHOP_NEWLINE; convert usage. Should this macro be in the cross platform headers? : The SetPtrToValue macro is repeatedly defined across binaries; however, it does not appear in any source file? This definition exists in connio.h at this time as SET_POINTER_TO_VALUE. Should this macro be retained in the cross platform headers? : Strucuture definitions should be grouped together; preferrably in the private header file as appropriate. : Move global variables to a binary name based structure and: If single source file; leave structure definition in that file. If multiple source files; move structure definition to the private header file; setup an extern of the structue which should be in the main source file. Globals for thread ID's are commonly defined as 'int' and not XplThreadID. Convert definitions such as: int Tid; int TGid; to: struct { XplThreadID main; XplThreadID group; } id; Adjust global variable names and usage appropriately. : Base64Chars[], DecodeBase64() and EncodeBase64() are commonly occurring in the binaries. Should this be moved to a utility library? : Remove inappropriate code comments and reformat those left behind as directed. : Convert BUG comments to fixme. : For defined strings; use sizeof(string) - 1 in place of a defined length. : Remove old connection i/o handling routines and definitions as directed (using little optimizations along the way?): XPLIPReadSSL XPLIPWriteSSL IOFuncs DoNMAPWrite DoNMAPRead DoClientWrite DoClientRead FlushClient SendClient SendNMAPServer GetNMAPAnswer GetNMAPAnswerLen ConnectUserToNMAPServer EndClientConnection 12: We need to resolve PRODUCT_VERSION definitions and use. 13: Improve client connection state processing