session.c
changeset 41 0cb519e770ba
parent 39 6d2a560793d3
--- a/session.c	Fri Sep 05 08:13:18 2014 +0500
+++ b/session.c	Fri Sep 05 10:24:20 2014 +0500
@@ -97,7 +97,7 @@
 static int		_pop3_debug = 0;
 
 void
-session_init(struct listener *l, int fd)
+session_init(struct listener *l, int fd, const struct sockaddr_storage *ss)
 {
 	struct session	*s;
 	void		*ssl;
@@ -105,6 +105,7 @@
 
 	s = xcalloc(1, sizeof(*s), "session_init");
 	s->l = l;
+	memmove(&s->ss, ss, sizeof(*ss));
 	if (iobuf_init(&s->iobuf, 0, 0) == -1)
 		fatal("iobuf_init");
 
@@ -120,7 +121,7 @@
 		return;
 	}
 
-	log_connect(s->id, &l->ss, l->ss.ss_len);
+	log_connect(s->id, &s->ss, s->ss.ss_len);
 	SPLAY_INSERT(session_tree, &sessions, s);
 	session_reply(s, "%s", "+OK pop3d ready");
 	io_set_write(&s->io);
@@ -188,7 +189,7 @@
 	case IO_TLSREADY:
 		/* greet only for pop3s, STLS already greeted */
 		if (s->flags & POP3S) {
-			log_connect(s->id, &s->l->ss, s->l->ss.ss_len);
+			log_connect(s->id, &s->ss, s->ss.ss_len);
 			session_reply(s, "%s", "+OK pop3 ready");
 			io_set_write(&s->io);
 		}