server->rstate = SMB_RECV_END; break; 
BUG(); 
int smb_request_recv(struct smb_sb_info *server){	struct smb_request *req = NULL;	int result = 0;	if (smb_recv_available(server) <= 0)		return 0;	VERBOSE("state: %d\n", server->rstate);	switch (server->rstate) {	case SMB_RECV_DROP:		result = smb_receive_drop(server);		if (result < 0)			break;		if (server->rstate == SMB_RECV_DROP)			break;		server->rstate = SMB_RECV_START;		/* fallthrough */	case SMB_RECV_START:		server->smb_read = 0;		server->rstate = SMB_RECV_HEADER;		/* fallthrough */	case SMB_RECV_HEADER:		result = smb_receive_header(server);		if (result < 0)			break;		if (server->rstate == SMB_RECV_HEADER)			break;		if (! (*(server->header + smb_flg) & SMB_FLAGS_REPLY) ) {			server->rstate = SMB_RECV_REQUEST;			break;		}		if (server->rstate != SMB_RECV_HCOMPLETE)			break;		/* fallthrough */	case SMB_RECV_HCOMPLETE:		req = find_request(server, WVAL(server->header, smb_mid));		if (!req)			break;		smb_init_request(server, req);		req->rq_rcls = *(req->rq_header + smb_rcls);		req->rq_err  = WVAL(req->rq_header, smb_err);		if (server->rstate != SMB_RECV_PARAM)			break;		/* fallthrough */	case SMB_RECV_PARAM:		if (!req)			req = find_request(server,WVAL(server->header,smb_mid));		if (!req)			break;		result = smb_recv_param(server, req);		if (result < 0)			break;		if (server->rstate != SMB_RECV_DATA)			break;		/* fallthrough */	case SMB_RECV_DATA:		if (!req)			req = find_request(server,WVAL(server->header,smb_mid));		if (!req)			break;		result = smb_recv_data(server, req);		if (result < 0)			break;		break;		/* We should never be called with any of these states */	case SMB_RECV_END:	case SMB_RECV_REQUEST:		server->rstate = SMB_RECV_END;		break;	}	if (result < 0) {		/* We saw an error */		return result;	}	if (server->rstate != SMB_RECV_END)		return 0;	result = 0;	if (req->rq_trans2_command && req->rq_rcls == SUCCESS)		result = smb_recv_trans2(server, req);	/*	 * Response completely read. Drop any extra bytes sent by the server.	 * (Yes, servers sometimes add extra bytes to responses)	 */	VERBOSE("smb_len: %d   smb_read: %d\n",		server->smb_len, server->smb_read);	if (server->smb_read < server->smb_len)		smb_receive_drop(server);	server->rstate = SMB_RECV_START;	if (!result) {		list_del_init(&req->rq_queue);		req->rq_flags |= SMB_REQ_RECEIVED;		smb_rput(req);		wake_up_interruptible(&req->rq_wait);	}	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/ccb6e363a68144cdfdaa6d964d63d620c8ac9a9b/request.c/clean/fs/smbfs/request.c