Skip to content

LOAD "ML:$",8 => LOAD "GAME",8 ==> truncated directory listing #30

@fredsa

Description

@fredsa

Repro steps

  1. Reboot Meatloaf, wait for WiFi to connect.
  2. Reboot C64.
  3. Try to load the GAME folder
    • LOAD "ML:$",8
    • LOAD "GAME",8
      Alternatively:
    • LOAD "HTTP://C64.MEATLOAF.CC/GAME",8

Expected behavior

Full GAME directory is loaded, 7358 bytes, as can be verified with:

$ curl 'http://c64.meatloaf.cc/game/' -H 'User-Agent: MEATLOAF/' -o dir.raw
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  7358    0  7358    0     0  59219      0 --:--:-- --:--:-- --:--:-- 59338

Actual behavior

Sometimes (though rarely), 7358 bytes are loaded as expected.

Most of the time, a corrupted/partial directory is loaded, and it's always 3860 bytes, which happens to cause corruption at the "LATENTFUSION" entry straddles the 3860 byte mark in the directory file.

Obtained IP address: 192.168.1.178
SNTP client start
Starting web server on port 80
WWW/WS/WebDAV Server Started!
mDNS Service Started!
TCP Server Started! (PORT 23)
[lib/device/iec/drive.cpp:567] open(): iecDrive::open(#8, 0, "HTTP://C64.MEATLOAF.CC/GAME")
[lib/device/iec/drive.cpp:633] open(): opening channel[0] m_cwd[/] name[HTTP://C64.MEATLOAF.CC/GAME] mode[read]
[lib/meatloaf/meatloaf.cpp:535] cd(): cd[http://c64.meatloaf.cc/game]
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
[lib/meatloaf/meatloaf.cpp:247] File(): targetPath[http://c64.meatloaf.cc/game]
[lib/meatloaf/meatloaf.cpp:267] File(): targetFile[/c64.meatloaf.cc/game] in targetFileSystem[http://c64.meatloaf.cc/game][http]
[lib/meatloaf/meatloaf.cpp:270] File(): sourcePath[]
[lib/meatloaf/meatloaf.cpp:274] File(): ** LOOK UP PATH NOT NEEDED   path[http://c64.meatloaf.cc/game] sourcePath[]
[lib/meatloaf/meatloaf.cpp:310] File(): source good rootfs[1][]
[lib/meatloaf/meatloaf.cpp:315] File(): target good rootfs[1][http://c64.meatloaf.cc/game]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[lib/device/iec/drive.cpp:654] open(): isdir[0] url[http://c64.meatloaf.cc/game]
[lib/meatloaf/network/http.cpp:248] HEAD(): HEAD
[lib/meatloaf/network/http.cpp:621] _http_event_handler(): * This page redirects from 'http://c64.meatloaf.cc/game' to 'http://c64.meatloaf.cc/game/'
[lib/meatloaf/network/http.cpp:643] _http_event_handler(): new url 'http://c64.meatloaf.cc/game/'
[lib/meatloaf/network/http.cpp:233] GET(): GET
[lib/device/iec/drive.cpp:764] open(): Stream created for file [http://c64.meatloaf.cc/game/]
[lib/device/iec/drive.cpp:773] open(): Subdir Change Directory Here! stream[http://c64.meatloaf.cc/game/] > base[http://c64.meatloaf.cc/game/]
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
[lib/meatloaf/meatloaf.cpp:247] File(): targetPath[http://c64.meatloaf.cc/game/]
[lib/meatloaf/meatloaf.cpp:267] File(): targetFile[/c64.meatloaf.cc/game/] in targetFileSystem[http://c64.meatloaf.cc/game/][http]
[lib/meatloaf/meatloaf.cpp:270] File(): sourcePath[]
[lib/meatloaf/meatloaf.cpp:274] File(): ** LOOK UP PATH NOT NEEDED   path[http://c64.meatloaf.cc/game/] sourcePath[]
[lib/meatloaf/meatloaf.cpp:310] File(): source good rootfs[1][]
[lib/meatloaf/meatloaf.cpp:315] File(): target good rootfs[1][http://c64.meatloaf.cc/game/]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[lib/meatloaf/network/http.cpp:310] close(): HTTP Close and Cleanup
[lib/device/iec/drive.cpp:250] readBufferData(): size[3860] avail[3860] pos[0]
[lib/device/iec/drive.cpp:250] readBufferData(): size[3860] avail[3348] pos[512]
[lib/device/iec/drive.cpp:250] readBufferData(): size[3860] avail[2836] pos[1024]
[lib/device/iec/drive.cpp:250] readBufferData(): size[3860] avail[2324] pos[1536]
[lib/device/iec/drive.cpp:250] readBufferData(): size[3860] avail[1812] pos[2048]
[lib/device/iec/drive.cpp:250] readBufferData(): size[3860] avail[1300] pos[2560]
[lib/device/iec/drive.cpp:250] readBufferData(): size[3860] avail[788] pos[3072]
[lib/device/iec/drive.cpp:250] readBufferData(): size[3860] avail[276] pos[3584]
[lib/device/iec/drive.cpp:250] readBufferData(): size[3860] avail[0] pos[3860]
[lib/device/iec/drive.cpp:800] close(): iecDrive::close(#8, 0)
[lib/meatloaf/network/http.cpp:310] close(): HTTP Close and Cleanup
[lib/device/iec/drive.cpp:198] ~iecChannelHandlerFile(): Stream closed.
[lib/device/iec/drive.cpp:201] ~iecChannelHandlerFile(): Sent 3860 bytes in 5.75 seconds @ 670.97cps
[lib/device/iec/drive.cpp:205] ~iecChannelHandlerFile(): Transport (network/sd) took 0.008 seconds, pure IEC transfers @ 671.95cps
[lib/device/iec/drive.cpp:209] ~iecChannelHandlerFile(): Stop Activity
[lib/device/iec/drive.cpp:818] close(): Channel 0 closed.
[lib/device/iec/drive.cpp:820] close(): Heap[2069524] Low[82948] Task[29896]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions