/*
* Copyright (c) 2006 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
* forth in the LICENSE file which can be found at the top level of
* the sendmail distribution.
*/
#include "sm/generic.h"
SM_RCSID("@(#)$Id: qss_rcptdel.c,v 1.1 2006/01/03 06:10:39 ca Exp $")
#include "sm/error.h"
#include "sm/assert.h"
#include "sm/qmgr.h"
#include "sm/qmgr-int.h"
#include "qmgr.h"
#include "log.h"
/*
** QM_SS_RCPTDEL -- delete SMTPS recipient
**
** Parameters:
** qss_ctx -- QMGR/SMTPS context
** qss_ta -- QMGR/SMTPS transaction
** rcpt_pa -- recipient printable address
** rcpt_idx -- recipient index
**
** Returns:
** usual sm_error code
*/
sm_ret_T
qm_ss_rcptdel(qss_ctx_P qss_ctx, qss_ta_P qss_ta, sm_str_P rcpt_pa, rcpt_idx_T rcpt_idx)
{
qmgr_ctx_P qmgr_ctx;
ibdb_rcpt_T ibdb_rcpt;
sm_ret_T ret;
qss_rcpt_P qss_rcpt;
uint rmflags;
rcpt_id_T rcpt_id;
SM_IS_QSS_CTX(qss_ctx);
qmgr_ctx = qss_ctx->qss_qmgr_ctx;
SM_IS_QMGR_CTX(qmgr_ctx);
sm_snprintf(rcpt_id, sizeof(rcpt_id), SMTP_RCPTID_FORMAT,
qss_ta->qssta_id, rcpt_idx);
qss_rcpt = (qss_rcpt_P) iqdb_lookup(qmgr_ctx->qmgr_iqdb,
rcpt_id, SMTP_RCPTID_SIZE,
THR_LOCK_UNLOCK);
if (qss_rcpt == NULL)
{
sm_log_write(qmgr_ctx->qmgr_lctx,
QM_LCAT_SMTPS, QM_LMOD_FROM_SMTPS, SM_LOG_DEBUG, 9,
"sev=DBG, func=qm_ss_rcptdel, status=rcpt_not_found");
return SM_NOTDONE;
}
ibdb_rcpt.ibr_ta_id = qss_ta->qssta_id;
ibdb_rcpt.ibr_pa = rcpt_pa;
ibdb_rcpt.ibr_idx = rcpt_idx;
ret = ibdb_rcpt_status(qmgr_ctx->qmgr_ibdb, &ibdb_rcpt,
IBDB_RCPT_DONE, IBDB_FL_NONE, THR_LOCK_UNLOCK);
if (sm_is_err(ret))
goto error;
rmflags = QSS_DECR_RCPTS_TOT|QSS_RMFIQDB;
ret = qss_rcpt_free(qss_ta, qss_rcpt, rmflags);
if (sm_is_err(ret))
goto error;
return ret;
error:
sm_log_write(qmgr_ctx->qmgr_lctx,
QM_LCAT_SMTPS, QM_LMOD_FROM_SMTPS, SM_LOG_DEBUG, 9,
"sev=DBG, func=qm_ss_rcptdel, ret=%#x",
ret);
return ret;
}
syntax highlighted by Code2HTML, v. 0.9.1