Sam, some hints here. while WC is a funcion call (#define WC ((struct wcsession *)pthread_getspecific(MyConKey))) WCC was the established way to cache the results of WC for a function.
WC is lightweight, but its a Stack operation, and is thus to be avoided by performance reasons; if used more than once in a function, the pointer should be cached localy. Then there is GetServerStatus(), which right now just does an atol, but in future we may add more funcionality into this, for example detecting whether there is an IM waiting. Please use it where possible. Since we're trying to get rid of plain c strings (in webict..) there is a migration solution to important message, please use the strbuff'ed one. I didn't test the drafts stuff so far, please re-check whether my additions did the job, and whether imap clients use the drafts folder properly. TIA.