Response errors may be protocol defined errors

This commit is contained in:
Audrius Butkevicius 2015-01-14 22:41:25 +00:00
parent 0e341832e0
commit c12265499a

View File

@ -85,9 +85,6 @@ type Model struct {
} }
var ( var (
ErrNoSuchFile = errors.New("no such file")
ErrInvalid = errors.New("file is invalid")
SymlinkWarning = sync.Once{} SymlinkWarning = sync.Once{}
) )
@ -684,12 +681,12 @@ func (m *Model) Close(device protocol.DeviceID, err error) {
// Implements the protocol.Model interface. // Implements the protocol.Model interface.
func (m *Model) Request(deviceID protocol.DeviceID, folder, name string, offset int64, size int, hash []byte, flags uint32, options []protocol.Option) ([]byte, error) { func (m *Model) Request(deviceID protocol.DeviceID, folder, name string, offset int64, size int, hash []byte, flags uint32, options []protocol.Option) ([]byte, error) {
if offset < 0 || size < 0 { if offset < 0 || size < 0 {
return nil, ErrNoSuchFile return nil, protocol.ErrNoSuchFile
} }
if !m.folderSharedWith(folder, deviceID) { if !m.folderSharedWith(folder, deviceID) {
l.Warnf("Request from %s for file %s in unshared folder %q", deviceID, name, folder) l.Warnf("Request from %s for file %s in unshared folder %q", deviceID, name, folder)
return nil, ErrNoSuchFile return nil, protocol.ErrNoSuchFile
} }
if flags != 0 { if flags != 0 {
@ -704,26 +701,26 @@ func (m *Model) Request(deviceID protocol.DeviceID, folder, name string, offset
if !ok { if !ok {
l.Warnf("Request from %s for file %s in nonexistent folder %q", deviceID, name, folder) l.Warnf("Request from %s for file %s in nonexistent folder %q", deviceID, name, folder)
return nil, ErrNoSuchFile return nil, protocol.ErrNoSuchFile
} }
lf, ok := folderFiles.Get(protocol.LocalDeviceID, name) lf, ok := folderFiles.Get(protocol.LocalDeviceID, name)
if !ok { if !ok {
return nil, ErrNoSuchFile return nil, protocol.ErrNoSuchFile
} }
if lf.IsInvalid() || lf.IsDeleted() { if lf.IsInvalid() || lf.IsDeleted() {
if debug { if debug {
l.Debugf("%v REQ(in): %s: %q / %q o=%d s=%d; invalid: %v", m, deviceID, folder, name, offset, size, lf) l.Debugf("%v REQ(in): %s: %q / %q o=%d s=%d; invalid: %v", m, deviceID, folder, name, offset, size, lf)
} }
return nil, ErrInvalid return nil, protocol.ErrInvalid
} }
if offset > lf.Size() { if offset > lf.Size() {
if debug { if debug {
l.Debugf("%v REQ(in; nonexistent): %s: %q o=%d s=%d", m, deviceID, name, offset, size) l.Debugf("%v REQ(in; nonexistent): %s: %q o=%d s=%d", m, deviceID, name, offset, size)
} }
return nil, ErrNoSuchFile return nil, protocol.ErrNoSuchFile
} }
if debug && deviceID != protocol.LocalDeviceID { if debug && deviceID != protocol.LocalDeviceID {