add: if ((!_user) || (!_contact) || (!data)) { ERROR_LOG("callback(): error!\n"); }  DEBUG_LOG("callback(): user=%.*s, contact=%.*s, %p, state=%d!\n", FMT_STR(*_user), FMT_STR(*_contact), data, state);
context: void callback(str* _user, str *_contact, int state, void* data){	mq_message_t *msg;	tuple_change_info_t *info;		/* asynchronous processing */	msg = create_message_ex(sizeof(tuple_change_info_t));	if (!msg) {		LOG(L_ERR, "can't create message with tuple status change\n");		return;	}	set_data_destroy_function(msg, (destroy_function_f)free_tuple_change_info_content);	info = get_message_data(msg);	if (state == 0) info->state = PS_OFFLINE;	else info->state = PS_ONLINE;	str_dup(&info->user, _user);	str_dup(&info->contact, _contact);	if (data) push_message(&((struct presentity*)data)->mq, msg);}