On Mar 17, 2005, at 1:21 PM, Patrick Welche wrote:
On Wed, Mar 16, 2005 at 04:04:48PM -0500, Patrick Radtke wrote:I'll add a little code sample
// server returns NO on an error imclient_addcallback(imclient, "NO", CALLBACK_NOLITERAL, callback_error, &error_string, NULL);
nc =1; imclient_send(imclient,end_command,(void*) &nc,"create \"user/bigtestuser3\""); while(nc > 0) { imclient_processoneevent(imclient); } cout << "create data is " << error_string << endl;
So bigtestuser3 already exists. So I would expect the imap server to return 'NO Mailbox already exists'. So I add a callback on the keyword 'NO', but it never gets called. Are there other settings I need to use on the callback?
Just experimenting, you could try CALLBACK_NUMBERED instead of CALLBACK_NOLITERAL, or just NULL, and you could even use "" instead of "NO" at least to start by catching all responses..
Cheers,
Patrick
I tried various combinations of CALLBACK_NUMBERED, NULL, "" and NO and did not have any luck.
I tried making things as simple as possible.
static void callback_generic(struct imclient *imclient, void *rock, struct imclient_reply *reply) { cout << "in gerneric callback " << endl; cout << "\tKeyword: " << reply->keyword << endl << "\tMsgno: " << reply->msgno << endl << "\tText: " << reply->text << endl << endl;
}
then in main
imclient_addcallback(imclient, "", /*also tried NO */ NULL, /*also tried CALLBACK_NUMBERED*/ callback_generic, &msg_string, NULL);
nc =1;
imclient_send(imclient,end_command,(void*) &nc,"create \"user/bigtestuser10\"");
while(nc > 0) { imclient_processoneevent(imclient); }
and I've tried both setting and not setting (my server supports LITERAL+)
imclient_setflags(imclient, IMCLIENT_CONN_NONSYNCLITERAL);
Is there some other step that must be performed? Things like getquota, getacl work fine.
From reading through 'man imclient' and the Imap V4 rev 1 RFC, it appears that imclient_addcallback is only good for untagged data response from the server.
While the response I am trying to detect (OK, NO) is a tagged response. Does anyone know how to process a tagged response with imclient?
-Patrick
--- Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html