예제 #1
0
/*
 * Send a request and place it on the recvq if successfully sent.
 * Must be called with the server lock held.
 */
static int smb_request_send_req(struct smb_request *req)
{
	struct smb_sb_info *server = req->rq_server;
	int result;

	if (req->rq_bytes_sent == 0) {
		WSET(req->rq_header, smb_tid, server->opt.tid);
		WSET(req->rq_header, smb_pid, 1);
		WSET(req->rq_header, smb_uid, server->opt.server_uid);
	}

	result = smb_send_request(req);
	if (result < 0 && result != -EAGAIN)
		goto out;

	result = 0;
	if (!(req->rq_flags & SMB_REQ_TRANSMITTED))
		goto out;

	list_del_init(&req->rq_queue);
	list_add_tail(&req->rq_queue, &server->recvq);
	result = 1;
out:
	return result;
}
예제 #2
0
파일: request.c 프로젝트: xricson/knoppix
/*
 * Send a request and place it on the recvq if successfully sent.
 * Must be called with the server lock held.
 */
int smb_request_send_req(struct smb_request *req)
{
	struct smb_sb_info *server = req->rq_server;
	int result;

	result = smb_send_request(req);
	if (result < 0 && result != -EAGAIN)
		goto out;

	result = 0;
	if (!(req->rq_flags & SMB_REQ_TRANSMITTED))
		goto out;

	list_del_init(&req->rq_queue);
	list_add_tail(&req->rq_queue, &server->recvq);
	result = 1;
out:
	return result;
}