struct worker *wrk;
+ unsigned sockaddrlen;
+ struct sockaddr *sockaddr;
+
/* formatted ascii client address */
char addr[TCP_ADDRBUFSIZE];
char port[TCP_PORTBUFSIZE];
#include <stdlib.h>
#include <string.h>
#include <sys/uio.h>
+#include <sys/socket.h>
#include "libvarnish.h"
#include "heritage.h"
/*--------------------------------------------------------------------*/
struct sessmem {
- unsigned magic;
-#define SESSMEM_MAGIC 0x555859c5
+ unsigned magic;
+#define SESSMEM_MAGIC 0x555859c5
- struct sess sess;
- struct http http;
+ struct sess sess;
+ struct http http;
+ struct sockaddr sockaddr[2]; /* INET6 hack */
};
/*--------------------------------------------------------------------*/
{
struct sessmem *sm;
- (void)addr; /* XXX */
- (void)len; /* XXX */
sm = calloc(
sizeof *sm + heritage.mem_workspace,
1);
sm->sess.magic = SESS_MAGIC;
sm->sess.mem = sm;
sm->sess.http = &sm->http;
+
+ sm->sess.sockaddr = sm->sockaddr;
+ assert(len < sizeof(sm->sockaddr));
+ memcpy(sm->sess.sockaddr, addr, len);
+ sm->sess.sockaddrlen = len;
http_Setup(&sm->http, (void *)(sm + 1), heritage.mem_workspace);
return (&sm->sess);
}