/* * 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; }