switch (errno) { default: lerror("readfromclient"); case ECONNRESET: case EPIPE: close_connection(p); return -1; case EAGAIN: 
if (errno == EAGAIN) 
static int readfromclient(struct connection *p){	size_t bytestoread;	ssize_t r;	bytestoread = p->client_input.ceiling - p->client_input.end;	if (bytestoread > p->pipe_params.imax)		bytestoread = p->pipe_params.imax;	if (bytestoread == 0) {		log_d("readfromclient: bytestoread is zero!");		return 0;	}	r = read(p->fd, p->client_input.end, bytestoread);	if (debug)		log_d("readfromclient: %d %d %d %d", p->fd, p->client_input.end - p->client_input.floor, bytestoread, r);	switch (r) {	case -1:		switch (errno) {		default:			lerror("readfromclient");		case ECONNRESET:		case EPIPE:			close_connection(p);			return -1;		case EAGAIN:			return 0;		}		break;	case 0:		log_d("readfromclient: client went away while posting data");		close_connection(p);		return -1;	default:		p->t = current_time;		p->nread += r;		p->client_input.end += r;		p->pipe_params.imax -= r;		break;	}	return 0;}
8520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/8520/b18195bb8fc7f508f6d7ef306245b6dc8439e3f0/stub.c/buggy/src/stub.c