- Added skeleton for control message type
- Created postmaster to handle message types as callbacks
- Began to move system over to using postmaster callback methods (but is not complete)
- As part of move, made XFER_DATA_COMPLETE message to know when file ends (easier for callback)
- Implemented refactor of header message handling, so it uses a callback system now
- Changed the callback call params to handle a struct to pass around persistent vars. It now has a void* in it as well should any uses of it need specific data that doesn't need to be passed around. It could also be moved into the postmaster later, if need be.
- Added some additional verbose output for testing
files.cpp:
- Refactored the way the file list works. Because we need to build & recurse a list up front, there will be possibly a ton of walking. So it now has a meta struct that stores head, tail, and size.
- Added zeroing out of initial data of file object
- Added timestamp to file object, stores value on creation
- Added routines to get file size of file list (in bytes) and walk a directory path & populate full list (not complete)

parcel.cpp:
- Began to move over to building full file list before starting any sending
- Added cleanup routine

receiver.cpp:
- Added cleanup routine
- Renamed global_data instance for clarification

sender.cpp:
- Added functionality for sender to handle postmaster messages
- Added preliminary functionality to send file list to reciever
- Added init/cleanup routines
- Refactoring handle_files to a) check if the file should be sent based on timestamp, and b) not recursively build file list
files.cpp:
- completed recursive walk to build file list before sending files
- made sure all strings to new_file_object are copied, possibly will work with read only, but dangerous
- wrote routines to pack/unpack file list as sent across, has serious issues now, but is complete & compilable

parcel.cpp:
- generified to start_udpipe_thread, so we don't have two routines that are basically the same
- added functionality to send file list before sending files (currently not working)

receiver.cpp:
- more memory cleanup
- implemented callback to handle file list

sender.cpp:
- made sure parcel_block is alloced/freed on usage
- fixed send_filelist to use the pack routine to send file list
- added routine to have the sender fire the file list and wait to get a response (not the best way to do this, we really need to move to more of a state machine, but it'll work for testing)
- centralized alloc_block to the init routine
- another adjustment to change handling of file_LL to use file_node_t
files.cpp:
- fixed bug with null-terminator not being used for copy & size calculate
- added debug print to spit out raw data

receiver.cpp:
- slight changes to debug output in pst_rec_callback_filelist

sender.cpp:
- fixed bug in handle_files where wrong pointer was being checked on loop
- added minor debug output

udpipe_client/server.cpp
- just formatting changes and some minor comments
- tweaked verbosity on output to not spew so much on VERB_2

files.cpp:
- Fixed bug in pack_file list where data was being incorrectly packed
- Fixed bug in build_full_filelist where file list was being created with incorrect root, causing incorrect recursive creation
- Added routines to properly free file lists and file objects
- Added preliminary routine to compare timestamps (needs work to correctly identify which is greater, tho)

parcel.cpp:
- Added a few frees to some of the malloc'ed memory (more to do there as well)
- Added ability to check a filelist on receive and send back after checking for existence/timestamps

receiver.cpp:
- Completed check of file list on callback, walking list and changing timestamps accordingly

sender.cpp:
- Completed handling of file list when sending files, passing in a list for handle_files so that it can see if files are necessary(this could cause issue with checkpoint file, need to test functionality)
- Trying to free memory wherever possible, following where Valgrind leads.

parcel.cpp:
- Added cleanup_pipes
- Acually used cleanup_parcel

receiver.cpp:
sender.cpp:
- Added a few memsets to zero out memory to make Valgrind happy

udpipe_threads.cpp:
- Valgrind identified that the indata and outdata buffers are hanging around, so added a bunch of frees to try and make sure it's gone (not working)
- Some indentation prettification
thread_manager.cpp/h:
- Created a basic way for threads to be tracked on whether they've exited gracefully

crypto.cpp/h:
- Minor indentification

parcel.cpp:
- Main app waits for threads to exit (which currently can basically hang the app forever, working on it)
- Added use of Josh's exit function to better clean up
- Moved free of pipes to below wait for threads
- Debug output

udpipe_client/server/threads:
- Using thread manager

All:
- Centralized exit from threads wherever possible
all:
- Moved output over to use verb function where appropriate

parcel.cpp:
- Changed verb to be able to output to a log file (still not tested)
- Closing file descriptors on the way out, causing many threads to properly exit
- Changed usage of pthread_join in some places to cause different waits

udpipe_client/server.cpp
- Closing UDT sockets on exit

udpipe_threads.cpp
- Closing another UDT socket on exit
- Added more checks within threads on when to exit
all
- made globals in parcel.cpp/h start with g_ to better identify
- replaced deprecated bzeros with memsets (pedantic, I know)
- added string in verb headers so that line can self identify which function it's printing from (should probably move into verb, but having to pass the string every time anyway means it just removes the ability not to print function name)

parcel.cpp
- added ability to print out a backtrace on a segfault
- unified remote_to_local and local_to_remote into a start_transfer function (still needs more debugging)
- removed argument from run_ssh_command, and just check length instead (what's passed is a global, and function was accessing the same global struct all over inside)
- added preliminary ability to have program spit out a log file, which will find a place to write depending on send/receive case (easier to debug remote problems)
testParcel.py:
- Program to do a round trip test to localhost to test parcel

crypto.cpp/h:
- Some formatting & style changes
- Moved the code to return a routine for the encryption type into its own routine

files.cpp:
- Changed verbosity of some messages

parcel.cpp:
- Implemented log file, which now will write if it can, and also opens/closes on each output in case it goes away, so it's kinda slow.
- Added define to comment out backtrace on segfault
- Removed passing of number to verbose arg for now
- Added routine for sender to wait for control ack from receiver, need to add timeout just in case

parcel.h:
- Changed header_t to hold enum for control message

receiver.cpp:
- Added send of ack for transfer complete (using control message)

sender.cpp:
- Added routine & callback to handle ack complete message

udpipe_client.cpp:
- Unified cleanup of UDT

udpipe_threads.cpp:
- Removed any UDT::close because it's done outside after threads exit
Merge branch 'master' of http://github.com/LabAdvComp/Parcel

parcel.cpp:
- Also changed behavior of verbose so that it's just a -v flag now
- Removed some commented out routines