diff options
Diffstat (limited to 'weed/server')
| -rw-r--r-- | weed/server/master_grpc_server.go | 8 | ||||
| -rw-r--r-- | weed/server/webdav_server.go | 8 |
2 files changed, 14 insertions, 2 deletions
diff --git a/weed/server/master_grpc_server.go b/weed/server/master_grpc_server.go index 4d0fbbc41..4f5455cb1 100644 --- a/weed/server/master_grpc_server.go +++ b/weed/server/master_grpc_server.go @@ -263,8 +263,12 @@ func (ms *MasterServer) KeepConnected(stream master_pb.Seaweed_KeepConnectedServ } ms.deleteClient(clientName) }() - - for _, message := range ms.Topo.ToVolumeLocations() { + for i, message := range ms.Topo.ToVolumeLocations() { + if i == 0 { + if leader, err := ms.Topo.Leader(); err == nil { + message.Leader = string(leader) + } + } if sendErr := stream.Send(&master_pb.KeepConnectedResponse{VolumeLocation: message}); sendErr != nil { return sendErr } diff --git a/weed/server/webdav_server.go b/weed/server/webdav_server.go index 265dea03a..5140af2b4 100644 --- a/weed/server/webdav_server.go +++ b/weed/server/webdav_server.go @@ -48,6 +48,13 @@ type WebDavServer struct { Handler *webdav.Handler } +func max(x, y int64) int64 { + if x <= y { + return y + } + return x +} + func NewWebDavServer(option *WebDavOption) (ws *WebDavServer, err error) { fs, _ := NewWebDavFileSystem(option) @@ -496,6 +503,7 @@ func (f *WebDavFile) Write(buf []byte) (int, error) { written, err := f.bufWriter.Write(buf) if err == nil { + f.entry.Attributes.FileSize = uint64(max(f.off+int64(written), int64(f.entry.Attributes.FileSize))) glog.V(3).Infof("WebDavFileSystem.Write %v: written [%d,%d)", f.name, f.off, f.off+int64(len(buf))) f.off += int64(written) } |
