Changeset 272 for trunk/src/sh_mail.c


Ignore:
Timestamp:
Jan 27, 2010, 10:52:20 PM (15 years ago)
Author:
katerina
Message:

Fixes tickets #190, #191, #192, #193, and #194.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/sh_mail.c

    r252 r272  
    947947
    948948static time_t time_wait = 300;
     949static void report_smtp (char * reply);
    949950
    950951static FILE * sh_mail_start_conn (struct alias * ma_address,
     
    11131114  if (0 != is_numeric(sh.host.name))
    11141115    {
    1115       TPT(( 0, FIL__, __LINE__, _("msg=<HELO [%s]>%c%c"),
    1116             sh.host.name, 13, 10));
     1116      sl_snprintf(error_msg, sizeof(error_msg), "HELO [%s]",
     1117                  sh.host.name);
    11171118    }
    11181119  else
    11191120    {
    1120       TPT(( 0, FIL__, __LINE__, _("msg=<HELO %s>%c%c"),
    1121             sh.host.name, 13, 10));
    1122     }
     1121      sl_snprintf(error_msg, sizeof(error_msg), "HELO %s",
     1122                  sh.host.name);
     1123    }
     1124  report_smtp(error_msg);
     1125
    11231126  if (0 != is_numeric(sh.host.name))
    11241127    fprintf(connFile, _("HELO [%s]%c%c"), sh.host.name, 13, 10);
     
    11521155    }
    11531156
    1154   TPT(( 0, FIL__, __LINE__,  _("msg=<MAIL FROM:<%s>>%c%c"),
    1155         this_address, 13, 10));
     1157  sl_snprintf(error_msg, sizeof(error_msg), "MAIL FROM:<%s>",
     1158              this_address);
     1159  report_smtp(error_msg);
    11561160
    11571161  (void) fflush(connFile);
     
    11751179  if (aFlag == 0)
    11761180    {
    1177       TPT(( 0, FIL__, __LINE__,  _("msg=<RCPT TO:<%s>>%c%c"),
    1178             address, 13, 10));
     1181      sl_snprintf(error_msg, sizeof(error_msg), "RCPT TO:<%s>",
     1182                  address);
     1183      report_smtp(error_msg);
    11791184
    11801185      (void) fflush(connFile);
     
    12101215          ++address_num;
    12111216
    1212           TPT(( 0, FIL__, __LINE__,  _("msg=<RCPT TO:<%s>>%c%c"),
    1213                 sh_string_str(ma_address->recipient), 13, 10));
     1217          sl_snprintf(error_msg, sizeof(error_msg), "RCPT TO:<%s>",
     1218                      sh_string_str(ma_address->recipient));
     1219          report_smtp(error_msg);
    12141220         
    12151221          (void) fflush(connFile);
     
    12411247  /* Send the message
    12421248   */
    1243   TPT(( 0, FIL__, __LINE__,  _("msg=<DATA>%c%c"), 13, 10));
     1249  report_smtp(_("DATA"));
    12441250
    12451251  (void) fflush(connFile);
     
    12731279  TPT(( 0, FIL__, __LINE__,  _("msg=<From: <%s>%c%cTo: <%s>%c%cDate: %s>%c%c"),
    12741280        this_address, 13, 10, address, 13, 10, my_tbuf, 13, 10));
     1281
     1282  report_smtp(_("sending data.."));
    12751283
    12761284  (void) fflush(connFile);
     
    12991307  time_wait = 300;
    13001308
     1309  report_smtp(_("."));
     1310
    13011311  (void) fflush(connFile);
    13021312  fprintf(connFile, _("%c%c.%c%c"), 13, 10, 13, 10);   
    13031313  (void) fflush(connFile);
    1304 
    1305   TPT(( 0, FIL__, __LINE__, _("msg=<message end written>\n")));
    13061314
    13071315  if (0 != sh_mail_wait(250, fd))
     
    13321340 *
    13331341 */
     1342extern int flag_err_debug;
     1343
     1344static void report_smtp (char * reply)
     1345{
     1346  char * tmp;
     1347
     1348  if (flag_err_debug == SL_TRUE)
     1349    {
     1350      tmp = sh_util_safe_name_keepspace(reply);
     1351
     1352      sh_error_handle (SH_ERR_ALL, FIL__, __LINE__, 0, MSG_E_SUBGEN,
     1353                       tmp,
     1354                       _("report_smtp") );
     1355      SH_FREE(tmp);
     1356    }
     1357  return;
     1358}
     1359
    13341360
    13351361static int sh_mail_wait(int code, int ma_socket)
     
    13391365  char c;
    13401366
    1341   char errmsg[128];
     1367  char errmsg[194];
     1368  char reply[128];
     1369  unsigned int  ireply = 0;
    13421370
    13431371  enum {
     
    13571385   */
    13581386
    1359   rcode = 0;
    1360   state = WAIT_CODE_START;
     1387  rcode    = 0;
     1388  state    = WAIT_CODE_START;
     1389  reply[0] = '\0';
    13611390
    13621391  while (sl_read_timeout_fd (ma_socket, &c, 1, time_wait, SL_FALSE) > 0) {
     1392
     1393    if (ireply < (sizeof(reply) - 1))
     1394      {
     1395        if (c != '\n' && c != '\r')
     1396          {
     1397            reply[ireply] = c;
     1398            ++ireply;
     1399            reply[ireply] = '\0';
     1400          }
     1401      }
    13631402
    13641403    g = (int) c;
     
    13791418      if (0 != isspace(g))
    13801419        break;             /* Skip white space                    */
    1381       if (0 == isdigit(g))
    1382         return 0;          /* No leading number                   */
     1420      if (0 == isdigit(g))
     1421        {
     1422          report_smtp(reply);
     1423          SL_RETURN( 0, _("mail_wait")); /* No leading number     */
     1424        }
    13831425      rcode = g-(int)'0';  /* convert to number                   */
    13841426      state = WAIT_CODE;
     
    14111453      if (g != 1)
    14121454        {
     1455          char * tmp = sh_util_safe_name_keepspace(reply);
    14131456          sl_snprintf(errmsg, sizeof(errmsg),
    1414                       _("Bad response (%d), expected %d"), rcode, code);
     1457                      _("Bad response (%s), expected %d"), tmp, code);
     1458          SH_FREE(tmp);
    14151459
    14161460          sh_error_handle((-1), FIL__, __LINE__, 0, MSG_E_NET,
    14171461                          errmsg, _("sh_mail_wait"),
    14181462                          _("mail"), _("SMTP server"));
     1463        }
     1464      else
     1465        {
     1466          report_smtp(reply);
    14191467        }
    14201468      waited_time = time(NULL) - waited_time;
     
    14381486
    14391487      TPT((0, FIL__, __LINE__, _("msg=<mail_wait: bad>\n")));
     1488      report_smtp(reply);
    14401489      SL_RETURN( 0, _("mail_wait"));
    14411490     
     
    14461495
    14471496  /* Failed, EOF or error on socket */
     1497  report_smtp(reply);
    14481498  SL_RETURN( 0, _("mail_wait"));
    14491499}
Note: See TracChangeset for help on using the changeset viewer.