blob: 3104cb0ca6521da5d2589c398a13767225564c58 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
/*
* $Id$
*
* Copyright (c) 1994, 1995. Netscape Communications Corporation. All
* rights reserved.
*
* Use of this software is governed by the terms of the license agreement for
* the Netscape Communications or Netscape Comemrce Server between the
* parties.
*/
/* ------------------------------------------------------------------------ */
/*
* session.h: Deals with virtual sessions
*
* A session is the time between when a client connects and when it
* disconnects. Several requests may be handled in one session.
*
* Rob McCool
*/
#ifndef SESSION_H
#define SESSION_H
#include "../netsite.h" /* MALLOC etc */
#include "net.h" /* dns-related stuff */
#include "buffer.h" /* netbuf */
/* ------------------------------ Structures ------------------------------ */
#define SESSION_HASHSIZE 5
typedef struct {
/* Client-specific information */
pblock *client;
SYS_NETFD csd;
netbuf *inbuf;
struct in_addr iaddr;
} Session;
/* ------------------------------ Prototypes ------------------------------ */
/*
* session_create creates a new request structure for the client with the
* given socket descriptor and sockaddr.
*/
Session *session_create(SYS_NETFD csd, struct sockaddr_in *sac);
/*
* session_free frees the given session
*/
void session_free(Session *sn);
/*
* session_dns returns the DNS hostname of the client of this session,
* and inserts it into the client pblock. Returns NULL if unavailable.
*/
#define session_dns(sn) session_dns_lookup(sn, 0)
/*
* session_maxdns looks up a hostname from an IP address, and then verifies
* that the host is really who they claim to be.
*/
#define session_maxdns(sn) session_dns_lookup(sn, 1)
char *session_dns_lookup(Session *sn, int verify);
#endif
|