void vca_write(struct sess *sp, void *ptr, size_t len);
void vca_flush(struct sess *sp);
void vca_return_session(struct sess *sp);
-void vca_close_session(struct sess *sp);
+void vca_close_session(struct sess *sp, const char *why);
void VCA_Init(void);
/* cache_backend.c */
if (sp->fd < 0 || sp->mem->niov == 0)
return;
i = writev(sp->fd, sp->mem->iov, sp->mem->niov);
- if (i != sp->mem->liov) {
- VSL(SLT_SessionClose, sp->fd, "Premature %d of %d",
- i, sp->mem->liov);
- vca_close_session(sp);
- }
+ if (i != sp->mem->liov)
+ vca_close_session(sp, "remote closed");
sp->mem->liov = 0;
sp->mem->niov = 0;
}
/*--------------------------------------------------------------------*/
void
-vca_close_session(struct sess *sp)
+vca_close_session(struct sess *sp, const char *why)
{
- VSL(SLT_SessionClose, sp->fd, "%s", sp->addr);
+ VSL(SLT_SessionClose, sp->fd, why);
close(sp->fd);
sp->fd = -1;
}
i = read(fd, hp->v, hp->e - hp->v);
if (i <= 0) {
if (hp->v != hp->s)
- VSL(SLT_SessionClose, fd,
- "remote had %d bytes errno %d", hp->v - hp->s, errno);
+ VSL(SLT_HttpError, fd,
+ "Received (only) %d bytes, errno %d",
+ hp->v - hp->s, errno);
+ else if (errno == 0)
+ VSL(SLT_HttpError, fd, "Received nothing");
else
- VSL(SLT_SessionClose, fd, "remote errno %d", errno);
+ VSL(SLT_HttpError, fd, "Received errno %d", errno);
hp->t = NULL;
event_del(&hp->ev);
if (hp->callback != NULL)
event_add(&e2.ev, NULL);
event_base_loop(w->eb, 0);
close (fd);
- vca_close_session(sp);
+ vca_close_session(sp, "pipe");
VBE_ClosedFd(fd_token);
}
}
if (http_GetHdr(sp->http, "Connection", &b) &&
!strcmp(b, "close")) {
- VSL(SLT_SessionClose, sp->fd, "hdr");
- vca_close_session(sp);
+ vca_close_session(sp, "Connection header");
}
AZ(pthread_mutex_lock(&sessmtx));
struct sess *sp = arg;
if (!good) {
- vca_close_session(sp);
+ vca_close_session(sp, "no request");
vca_return_session(sp);
return;
}