diff --git a/build-all.sh b/build-all.sh
index 1df528a..4ea903f 100755
--- a/build-all.sh
+++ b/build-all.sh
@@ -55,7 +55,7 @@ for PLATFORM in "${PLATFORMS[@]}"; do
set_goarm "$GOARCH"
BIN_FILENAME="${OUTPUT}-${GOOS}-${GOARCH}${GOARM}"
if [[ "${GOOS}" == "windows" ]]; then BIN_FILENAME="${BIN_FILENAME}.exe"; fi
- CMD="GOOS=${GOOS} GOARCH=${GOARCH} ${GO_ARM} ${GOBIN} build ${BUILD_FLAGS} -o ${BIN_FILENAME} ./cmd"
+ CMD="GOOS=${GOOS} GOARCH=${GOARCH} ${GO_ARM} CGO_ENABLED=0 ${GOBIN} build ${BUILD_FLAGS} -o ${BIN_FILENAME} ./cmd"
echo "${CMD}"
eval "$CMD" || FAILURES="${FAILURES} ${GOOS}/${GOARCH}${GOARM}"
done
diff --git a/server/torr/state/state.go b/server/torr/state/state.go
index 7e79ccf..be9fd02 100644
--- a/server/torr/state/state.go
+++ b/server/torr/state/state.go
@@ -1,5 +1,9 @@
package state
+import (
+ "server/torr/storage/reader"
+)
+
type TorrentStat int
func (t TorrentStat) String() string {
@@ -62,6 +66,8 @@ type TorrentStatus struct {
PiecesDirtiedGood int64 `json:"pieces_dirtied_good,omitempty"`
PiecesDirtiedBad int64 `json:"pieces_dirtied_bad,omitempty"`
+ Readers []*reader.ReaderState `json:"readers,omitempty"`
+
FileStats []*TorrentFileStat `json:"file_stats,omitempty"`
}
diff --git a/server/torr/storage/reader/state.go b/server/torr/storage/reader/state.go
new file mode 100644
index 0000000..c38bbbe
--- /dev/null
+++ b/server/torr/storage/reader/state.go
@@ -0,0 +1,7 @@
+package reader
+
+type ReaderState struct {
+ Start int
+ End int
+ Reader int
+}
diff --git a/server/torr/storage/state/state.go b/server/torr/storage/state/state.go
index 306c9b0..0daa755 100644
--- a/server/torr/storage/state/state.go
+++ b/server/torr/storage/state/state.go
@@ -2,6 +2,7 @@ package state
import (
"server/torr/state"
+ "server/torr/storage/reader"
)
type CacheState struct {
@@ -12,7 +13,7 @@ type CacheState struct {
PiecesCount int
Torrent *state.TorrentStatus
Pieces map[int]ItemState
- Readers []*ReaderState
+ Readers []*reader.ReaderState
}
type ItemState struct {
@@ -21,9 +22,3 @@ type ItemState struct {
Size int64
Completed bool
}
-
-type ReaderState struct {
- Start int
- End int
- Reader int
-}
diff --git a/server/torr/storage/torrstor/cache.go b/server/torr/storage/torrstor/cache.go
index 3a38bc2..206a9a9 100644
--- a/server/torr/storage/torrstor/cache.go
+++ b/server/torr/storage/torrstor/cache.go
@@ -13,6 +13,7 @@ import (
"server/log"
"server/settings"
+ "server/torr/storage/reader"
"server/torr/storage/state"
"server/torr/utils"
@@ -149,12 +150,12 @@ func (c *Cache) GetState() *state.CacheState {
}
}
- readersState := make([]*state.ReaderState, 0)
+ readersState := make([]*reader.ReaderState, 0)
c.muReaders.Lock()
for r, _ := range c.readers {
rng := r.getPiecesRange()
pc := r.getReaderPiece()
- readersState = append(readersState, &state.ReaderState{
+ readersState = append(readersState, &reader.ReaderState{
Start: rng.Start,
End: rng.End,
Reader: pc,
diff --git a/server/torr/storage/torrstor/diskpiece.go b/server/torr/storage/torrstor/diskpiece.go
index 71bc569..e973eb0 100644
--- a/server/torr/storage/torrstor/diskpiece.go
+++ b/server/torr/storage/torrstor/diskpiece.go
@@ -37,7 +37,9 @@ func (p *DiskPiece) WriteAt(b []byte, off int64) (n int, err error) {
go p.piece.cache.LoadPiecesOnDisk()
- p.piece.Size += int64(n)
+ if p.piece.Size > p.piece.cache.pieceLength {
+ p.piece.Size = p.piece.cache.pieceLength
+ }
p.piece.Accessed = time.Now().Unix()
return
}
diff --git a/server/torr/storage/torrstor/mempiece.go b/server/torr/storage/torrstor/mempiece.go
index 3f7b48c..6b69724 100644
--- a/server/torr/storage/torrstor/mempiece.go
+++ b/server/torr/storage/torrstor/mempiece.go
@@ -29,6 +29,9 @@ func (p *MemPiece) WriteAt(b []byte, off int64) (n int, err error) {
}
n = copy(p.buffer[off:], b[:])
p.piece.Size += int64(n)
+ if p.piece.Size > p.piece.cache.pieceLength {
+ p.piece.Size = p.piece.cache.pieceLength
+ }
p.piece.Accessed = time.Now().Unix()
return
}
diff --git a/server/torr/storage/torrstor/reader.go b/server/torr/storage/torrstor/reader.go
index 2cbf3dc..3d5e57e 100644
--- a/server/torr/storage/torrstor/reader.go
+++ b/server/torr/storage/torrstor/reader.go
@@ -135,7 +135,7 @@ func (r *Reader) getPieceNum(offset int64) int {
func (r *Reader) getOffsetRange() (int64, int64) {
- if time.Now().Unix() > r.lastAccess+60 {
+ if time.Now().Unix() > r.lastAccess+60 && len(r.cache.readers) > 1 {
return r.file.Offset(), r.file.Offset()
}
diff --git a/server/torr/torrent.go b/server/torr/torrent.go
index 59494fd..f0858a1 100644
--- a/server/torr/torrent.go
+++ b/server/torr/torrent.go
@@ -427,6 +427,11 @@ func (t *Torrent) Status() *state.TorrentStatus {
}
}
}
+
+ if t.cache != nil {
+ st.Readers = t.cache.GetState().Readers
+ }
+
return st
}
diff --git a/server/version/version.go b/server/version/version.go
index f247f31..2f242c0 100644
--- a/server/version/version.go
+++ b/server/version/version.go
@@ -1,3 +1,3 @@
package version
-const Version = "MatriX.94"
+const Version = "MatriX.95"
diff --git a/server/web/pages/template/pages/index.html b/server/web/pages/template/pages/index.html
index d2d01f6..d959f20 100644
--- a/server/web/pages/template/pages/index.html
+++ b/server/web/pages/template/pages/index.html
@@ -4,7 +4,7 @@
//# sourceMappingURL=firebase-app.js.map