95 #include <netinet/in.h>
119 time_t start,
int flags)
122 const char *host =
STR(iter->
host);
123 const char *addr =
STR(iter->
addr);
124 unsigned port = iter->
port;
131 session->
port = port;
163 session->tls_context = 0;
164 session->tls_retry_plain = 0;
165 session->tls_nexthop = 0;
179 if (session->tls_context)
180 tls_client_stop(smtp_tls_ctx, session->
stream,
259 if (smtp_sasl_enable)
281 const char *myname =
"smtp_session_activate";
291 unsigned reuse_count;
301 endp_props =
STR(endp_prop);
303 msg_warn(
"%s: bad cached session reuse count property", myname);
306 reuse_count = atoi(prop);
308 msg_warn(
"%s: bad cached session features property", myname);
311 features = atoi(prop);
313 msg_warn(
"%s: bad cached session expiration time property", myname);
316 #ifdef MISSING_STRTOUL
317 expire_time = strtol(prop, 0, 10);
319 expire_time = strtoul(prop, 0, 10);
335 dest_props =
STR(dest_prop);
336 if ((dest =
mystrtok(&dest_props,
"\n")) == 0) {
337 msg_warn(
"%s: missing cached session destination property", myname);
340 if ((host =
mystrtok(&dest_props,
"\n")) == 0) {
341 msg_warn(
"%s: missing cached session hostname property", myname);
344 if ((addr =
mystrtok(&dest_props,
"\n")) == 0) {
345 msg_warn(
"%s: missing cached session address property", myname);
349 msg_warn(
"%s: bad cached destination features property", myname);
352 features |= atoi(prop);
368 msg_info(
"%s: dest=%s host=%s addr=%s port=%u features=0x%x, "
372 (
long) (expire_time - time((time_t *) 0)),
int debug_peer_check(const char *name, const char *addr)
char * mystrdup(const char *str)
#define USE_NEWBORN_SESSION
#define SMTP_MISC_FLAG_CONN_STORE
int var_smtp_starttls_tmout
void smtp_sasl_passivate(SMTP_SESSION *, VSTRING *)
SMTP_SESSION * smtp_session_activate(int fd, SMTP_ITERATOR *iter, VSTRING *dest_prop, VSTRING *endp_prop)
int alldig(const char *string)
char * mystrtok(char **src, const char *sep)
#define SMTP_FEATURE_FROM_CACHE
void smtp_chat_init(SMTP_SESSION *)
#define SMTP_FEATURE_DESTINATION_MASK
#define DONT_CACHE_THIS_SESSION
MIME_STATE * mime_state_free(MIME_STATE *state)
#define SMTP_FEATURE_ENDPOINT_MASK
int vstream_fclose(VSTREAM *stream)
#define CACHE_THIS_SESSION_UNTIL(when)
void msg_warn(const char *fmt,...)
int smtp_sasl_activate(SMTP_SESSION *, char *)
VSTRING * vstring_alloc(ssize_t len)
void smtp_sasl_connect(SMTP_SESSION *)
void debug_peer_restore(void)
VSTRING * vstring_sprintf(VSTRING *vp, const char *format,...)
#define SMTP_ITER_CLOBBER(iter, _dest, _host, _addr)
struct MIME_STATE * mime_state
int vstream_fflush(VSTREAM *stream)
char * concatenate(const char *arg0,...)
int smtp_session_passivate(SMTP_SESSION *session, VSTRING *dest_prop, VSTRING *endp_prop)
void smtp_sasl_cleanup(SMTP_SESSION *)
VSTRING * vstring_free(VSTRING *vp)
int vstream_fdclose(VSTREAM *stream)
#define vstream_fileno(vp)
void smtp_chat_reset(SMTP_SESSION *)
void smtp_session_free(SMTP_SESSION *session)
VSTREAM * vstream_fdopen(int fd, int flags)
void * mymalloc(ssize_t len)
SMTP_SESSION * smtp_session_alloc(VSTREAM *stream, SMTP_ITERATOR *iter, time_t start, int flags)
void msg_info(const char *fmt,...)