pop3d.h
author Sunil Nimmagadda <sunil@sunilnimmagadda.com>
Tue, 01 Apr 2014 20:19:43 +0500
changeset 4 cb3d0d99955c
child 5 9e370734cb36
permissions -rw-r--r--
Import.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
     1
/*
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
     2
 * Copyright (c) 2014 Sunil Nimmagadda <sunil@nimmagadda.net>
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
     3
 *
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
     4
 * Permission to use, copy, modify, and distribute this software for any
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
     5
 * purpose with or without fee is hereby granted, provided that the above
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
     6
 * copyright notice and this permission notice appear in all copies.
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
     7
 *
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
     8
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
     9
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    10
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    11
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    12
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    13
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    14
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    15
 */
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    16
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    17
#include <sys/tree.h>
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    18
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    19
#include <sha1.h>
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    20
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    21
#include "imsgev.h"
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    22
#include "iobuf.h"
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    23
#include "ioev.h"
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    24
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    25
#define	ARGLEN		40
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    26
#define POP3S		0x01
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    27
#define	F_DELE		0x01
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    28
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    29
struct passwd;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    30
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    31
enum imsg_type {
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    32
	IMSG_AUTH,
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    33
	IMSG_MAILDROP_INIT,
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    34
	IMSG_MAILDROP_RETR,
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    35
	IMSG_MAILDROP_DELE,
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    36
	IMSG_MAILDROP_RSET,
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    37
	IMSG_MAILDROP_LIST,
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    38
	IMSG_MAILDROP_LISTALL,
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    39
	IMSG_MAILDROP_UIDLALL,
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    40
	IMSG_MAILDROP_UPDATE
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    41
};
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    42
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    43
enum m_type {
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    44
	M_MBOX,
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    45
	M_MAILDIR
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    46
};
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    47
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    48
struct msg {
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    49
	union {
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    50
		SIMPLEQ_ENTRY(msg)	q_entry;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    51
		RB_ENTRY(msg)		t_entry;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    52
	}				e;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    53
	char				hash[SHA1_DIGEST_STRING_LENGTH];
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    54
	size_t				sz;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    55
	size_t				nlines;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    56
	union {
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    57
		long			offset;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    58
		const char		*fname;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    59
	}				u;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    60
	int				flags;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    61
};
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    62
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    63
struct mdrop {
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    64
	union {
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    65
		SIMPLEQ_HEAD(, msg)	q_msgs;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    66
		RB_HEAD(msgtree, msg)	t_msgs;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    67
	}				e;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    68
	size_t				nmsgs;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    69
	size_t				sz;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    70
	struct msg			**msgs_index; /* random access to msgs */
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    71
	int				fd;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    72
};
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    73
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    74
struct stats {
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    75
	size_t	nmsgs;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    76
	size_t	sz;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    77
};
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    78
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    79
struct retr_req {
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    80
	unsigned int	idx;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    81
	unsigned int	ntop;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    82
	int		top;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    83
};
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    84
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    85
struct retr_res {
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    86
	size_t		nlines;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    87
	long		offset;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    88
	unsigned int	ntop;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    89
	int		top;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    90
};
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    91
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    92
struct list_req {
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    93
	unsigned int	idx;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    94
	int		uidl;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    95
};
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    96
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    97
struct list_res {
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    98
	unsigned int	idx;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
    99
	union {
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   100
		size_t	sz;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   101
		char	hash[SHA1_DIGEST_STRING_LENGTH];
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   102
	}		u;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   103
	int		uidl;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   104
};
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   105
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   106
struct m_backend {
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   107
	int (*init)(struct mdrop *, size_t *, size_t *);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   108
	int (*retr)(struct mdrop *, unsigned int, size_t *, size_t *);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   109
	int (*update)(struct mdrop *);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   110
};
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   111
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   112
struct auth_req {
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   113
	char	user[ARGLEN];
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   114
	char	pass[ARGLEN];
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   115
};
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   116
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   117
struct listener {
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   118
	struct sockaddr_storage	ss;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   119
	struct event		ev;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   120
	struct event		pause;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   121
	int			flags;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   122
	int			sock;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   123
};
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   124
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   125
enum state {
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   126
	AUTH,
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   127
	TRANSACTION,
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   128
	UPDATE
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   129
};
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   130
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   131
struct session {
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   132
	SPLAY_ENTRY(session)	entry;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   133
	struct imsgev		iev_maildrop;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   134
	struct iobuf		iobuf;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   135
	struct io		io;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   136
	char			user[ARGLEN];
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   137
	char			pass[ARGLEN];
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   138
	size_t			m_sz;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   139
	size_t			nmsgs;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   140
	struct listener		*l;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   141
	uint32_t		id;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   142
	int			sock;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   143
	int			flags;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   144
	enum state		state;
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   145
};
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   146
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   147
/* pop3e.c */
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   148
pid_t pop3_main(int [2], struct passwd *);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   149
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   150
/* session.c */
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   151
void session_init(struct listener *, int);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   152
void session_close(struct session *, int);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   153
void session_reply(struct session *, char *, ...);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   154
void session_set_state(struct session *, enum state);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   155
void session_imsgev_init(struct session *, int);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   156
SPLAY_HEAD(session_tree, session);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   157
int session_cmp(struct session *, struct session *);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   158
SPLAY_PROTOTYPE(session_tree, session, entry, session_cmp);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   159
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   160
/* maildrop.c */
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   161
pid_t maildrop_init(uint32_t, int [2], struct passwd *, int, const char *);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   162
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   163
/* util.c */
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   164
void set_nonblocking(int);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   165
void log_init(int);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   166
void logit(int, const char *, ...);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   167
void vlog(int, const char *, va_list);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   168
void fatal(const char *);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   169
void fatalx(const char *);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   170
void *xcalloc(size_t, size_t, const char *);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   171
void iobuf_xfqueue(struct iobuf *, const char *, const char *, ...);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   172
void iobuf_xqueue(struct iobuf *, const char *, const void *, size_t);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   173
int imsgev_xcompose(struct imsgev *, u_int16_t, u_int32_t,
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   174
    uint32_t, int, void *, u_int16_t, const char *);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   175
int get_index(struct session *, const char *, unsigned int *);
cb3d0d99955c Import.
Sunil Nimmagadda <sunil@sunilnimmagadda.com>
parents:
diff changeset
   176
void log_connect(uint32_t, struct sockaddr_storage *, socklen_t);