Mixes for Privacy and Anonymity in the Internet
Todo List
Member CAAccountingDBInterface::__markAsSettled (UINT64 accountNumber, UINT8 *cascadeId, UINT64 a_transferredBytes)
what to do if there was a new CC stored while we were busy settling the old one?
Member CAAccountingDBInterface::__storeCostConfirmation (CAXMLCostConfirmation &cc, UINT8 *ccCascade)
optimize - maybe do check and insert/update in one step??
Member CAAccountingDBInterface::markAsSettled (UINT64 accountNumber, UINT8 *cascadeId, UINT64 a_transferredBytes)
what to do if there was a new CC stored while we were busy settling the old one?
Member CAAccountingInstance::handleChallengeResponse_internal (tAiAccountingInfo *pAccInfo, DOMElement *root)

We need this trick so that the program does not freeze with active AI ThreadPool!!!!

Dangerous, as this may collide with previous accounts that have been used and deleted before... There should be something like an expiration date for the account status, e.g. 1 month

We need this trick so that the program does not freeze with active AI ThreadPool!!!!

Member CAAccountingInstance::handleJapPacket_internal (fmHashTableEntry *pHashEntry, bool a_bControlMessage, bool a_bMessageToJAP)
We need this trick so that the program does not freeze with active AI ThreadPool!!!!
Member CAAccountingInstance::m_pSettleThread
initialize this member
Member CAAccountingInstance::processJapMessage (fmHashTableEntry *pHashEntry, const XERCES_CPP_NAMESPACE::DOMDocument *a_DomDoc)
this does not work yet due to errors in CAMutex!!! if (handleFunc) { pItem = new aiQueueItem; pItem->pDomDoc = new DOM_Document(a_DomDoc); pItem->pAccInfo = pHashEntry->pAccountingInfo; pItem->handleFunc = handleFunc;
Class CAAccountingSettleThread
make SLEEP_SECONDS a configure option
Member CACmdLnOptions::buildDefaultConfig (XERCES_CPP_NAMESPACE::DOMDocument *a_doc, bool bForLastMix)

MixType can be chosen randomly between FirstMix and MiddleMix but not LastMix! sk13: ok this is a hack - but this way it can also create configurations for LastMixes which makes testing of the dynamic szenario much easier...

Add a list of default InfoServices to the default configuration

Add Description section because InfoService doesn't accept MixInfos without Location or Operator

Member CACmdLnOptions::saveToFile (XERCES_CPP_NAMESPACE::DOMDocument *a_doc, const UINT8 *a_strFileName)
Check for errors
Member CAConditionVariable::wait (UINT32 msTimeout)
add something better here....
Member CAFirstMix::doUserLogin_internal (CAMuxSocket *pNewUSer, UINT8 perrIP[4])
Cleanup of runing thread if mix restarts...
Member CAFirstMixA::loop ()
check if thread is closed
Member CAHttpClient::parseHTTPHeader (UINT32 *contentLength, UINT32 *statusCode=NULL, UINT32 msTimeOut=3000)

: Verify that "HTTP/1.1 200 OK" must be the first line!

: Maybe set an other statusCode in case of an error ?

Member CASocket::create (SINT32 type, bool a_bShowTypicalError)
Not thread safe!
Member CASocket::getLocalIP (UINT8 r_Ip[4])
: Question: Correct for Unix domain sockets?
Member createDOMDocument ()

think about timezone handling

think about timezone handling

Member integrateDOMNode (const DOMNode *srcNode, DOMNode *dstNode, bool recursive, bool replace)
: check!
Member memtrim (UINT8 *out, const UINT8 *in, UINT32 len)
replace UINT32 size with SINT32 size
Member parseS64 (const UINT8 *str, SINT64 &value)
code if we do not have native UINT64
Member parseU64 (const UINT8 *str, UINT64 &value)
code if we do not have native UINT64
Member parseUINT16 (const UINT8 *str, UINT16 &value)
think about timezone handling