• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10.1/postfix-255/postfix/src/smtpstone/

Lines Matching refs:session

157   * Per-session data structure with state.
166 int xfer_count; /* # of xfers in session */
360 static void startup(SESSION *session)
363 myfree((char *) session);
367 if (session->stream == 0) {
368 enqueue_connect(session);
370 send_mail(session);
378 SESSION *session = (SESSION *) context;
380 startup(session);
383 /* start_another - start another session */
385 static void start_another(SESSION *session)
388 event_request_timer(start_event, (char *) session,
391 event_request_timer(start_event, (char *) session, fixed_delay);
393 startup(session);
399 static void enqueue_connect(SESSION *session)
401 session->next = 0;
403 last_session = session;
404 start_connect(session);
406 last_session->next = session;
407 last_session = session;
413 static void dequeue_connect(SESSION *session)
415 if (session == last_session) {
416 if (session->next != 0)
420 if (session->next == 0)
422 start_connect(session->next);
428 static void fail_connect(SESSION *session)
430 if (session->connect_count-- == 1)
433 event_disable_readwrite(vstream_fileno(session->stream));
434 vstream_fclose(session->stream);
435 session->stream = 0;
441 start_connect(session);
446 static void start_connect(SESSION *session)
465 session->stream = vstream_fdopen(fd, O_RDWR);
466 event_enable_write(fd, connect_done, (char *) session);
467 smtp_timeout_setup(session->stream, var_timeout);
471 fail_connect(session);
478 SESSION *session = (SESSION *) context;
479 int fd = vstream_fileno(session->stream);
486 fail_connect(session);
491 event_enable_read(fd, read_banner, (char *) session);
492 dequeue_connect(session);
499 vstream_tweak_tcp(session->stream);
507 SESSION *session = (SESSION *) context;
514 if ((except = vstream_setjmp(session->stream)) != 0)
520 if (((resp = response(session->stream, buffer))->code / 100) == 2) {
532 send_helo(session);
534 send_mail(session);
539 static void send_helo(SESSION *session)
547 if ((except = vstream_setjmp(session->stream)) != 0)
550 command(session->stream, "%s %s", protocol, var_myhostname);
555 event_enable_read(vstream_fileno(session->stream), helo_done, (char *) session);
562 SESSION *session = (SESSION *) context;
570 if ((except = vstream_setjmp(session->stream)) != 0)
573 if ((resp = response(session->stream, buffer))->code / 100 == 2) {
578 close_session(session);
585 send_mail(session);
590 static void send_mail(SESSION *session)
597 if ((except = vstream_setjmp(session->stream)) != 0)
600 command(session->stream, "MAIL FROM:<%s>", sender);
605 event_enable_read(vstream_fileno(session->stream), mail_done, (char *) session);
612 SESSION *session = (SESSION *) context;
619 if ((except = vstream_setjmp(session->stream)) != 0)
622 if ((resp = response(session->stream, buffer))->code / 100 == 2) {
623 session->rcpt_count = recipients;
624 session->rcpt_done = 0;
625 session->rcpt_accepted = 0;
630 close_session(session);
643 SESSION *session = (SESSION *) context;
649 if ((except = vstream_setjmp(session->stream)) != 0)
652 if (session->rcpt_count > 1 || number_rcpts > 0)
653 command(session->stream, "RCPT TO:<%d%s>",
654 number_rcpts ? number_rcpts++ : session->rcpt_count,
657 command(session->stream, "RCPT TO:<%s>", recipient);
658 session->rcpt_count--;
659 session->rcpt_done++;
664 event_enable_read(vstream_fileno(session->stream), rcpt_done, (char *) session);
671 SESSION *session = (SESSION *) context;
678 if ((except = vstream_setjmp(session->stream)) != 0)
681 if ((resp = response(session->stream, buffer))->code / 100 == 2) {
682 session->rcpt_accepted++;
686 close_session(session);
696 if (session->rcpt_count > 0)
698 else if (session->rcpt_accepted > 0)
708 SESSION *session = (SESSION *) context;
714 if ((except = vstream_setjmp(session->stream)) != 0)
716 command(session->stream, "DATA");
721 event_enable_read(vstream_fileno(session->stream), data_done, (char *) session);
728 SESSION *session = (SESSION *) context;
737 if ((except = vstream_setjmp(session->stream)) != 0)
739 if ((resp = response(session->stream, buffer))->code == 354) {
744 close_session(session);
761 smtp_printf(session->stream, "From: <%s>", sender);
762 smtp_printf(session->stream, "To: <%s>", recipient);
763 smtp_printf(session->stream, "Date: %s", mydate);
764 smtp_printf(session->stream, "Message-Id: <%04x.%04x.%04x@%s>",
765 mypid, vstream_fileno(session->stream), message_count, var_myhostname);
767 smtp_printf(session->stream, "Subject: %s", subject);
768 smtp_fputs("", 0, session->stream);
774 if ((except = vstream_setjmp(session->stream)) != 0)
777 smtp_fputs("La de da de da 1.", 17, session->stream);
778 smtp_fputs("La de da de da 2.", 17, session->stream);
779 smtp_fputs("La de da de da 3.", 17, session->stream);
780 smtp_fputs("La de da de da 4.", 17, session->stream);
787 smtp_fputs(message_data, message_length, session->stream);
793 command(session->stream, ".");
807 event_enable_read(vstream_fileno(session->stream), dot_done, (char *) session);
814 SESSION *session = (SESSION *) context;
821 if ((except = vstream_setjmp(session->stream)) != 0)
824 if ((resp = response(session->stream, buffer))->code / 100 == 2) {
829 close_session(session);
835 } while (talk_lmtp && --session->rcpt_done > 0);
836 session->xfer_count++;
842 send_quit(session);
844 event_disable_readwrite(vstream_fileno(session->stream));
845 start_another(session);
853 SESSION *session = (SESSION *) context;
855 command(session->stream, "RSET");
856 event_enable_read(vstream_fileno(session->stream), rset_done, (char *) session);
863 SESSION *session = (SESSION *) context;
870 if ((except = vstream_setjmp(session->stream)) != 0)
872 if ((resp = response(session->stream, buffer))->code / 100 == 2) {
877 close_session(session);
888 send_quit(session);
890 event_disable_readwrite(vstream_fileno(session->stream));
891 start_another(session);
897 static void send_quit(SESSION *session)
899 command(session->stream, "QUIT");
900 event_enable_read(vstream_fileno(session->stream), quit_done, (char *) session);
907 SESSION *session = (SESSION *) context;
909 (void) response(session->stream, buffer);
910 event_disable_readwrite(vstream_fileno(session->stream));
911 vstream_fclose(session->stream);
912 session->stream = 0;
913 start_another(session);
918 static void close_session(SESSION *session)
920 event_disable_readwrite(vstream_fileno(session->stream));
921 vstream_fclose(session->stream);
922 session->stream = 0;
923 start_another(session);
939 SESSION *session;
1037 msg_fatal("bad session count: %s", optarg);
1167 session = (SESSION *) mymalloc(sizeof(*session));
1168 session->stream = 0;
1169 session->xfer_count = 0;
1170 session->connect_count = connect_count;
1171 session->next = 0;
1173 startup(session);