[hunchentoot-devel] New release 0.6.0 - Another error uploading file

Ury Marshak urym at two-bytes.com
Tue Jan 23 23:38:25 UTC 2007


Edi Weitz wrote:
> You should now only see a warning in the log file.  I
> could upload 100 files in a row without problems using your test
> script.
>
>   

Yes, thanks, the test works! Although I seem to have stumbled on a 
different issue with uploading. All it seems to take is to set the 
variable *hunchentoot-default-external-format* to utf-8. I.e. I start 
the hunchentoot test and evaluate:
(setf hunchentoot:*hunchentoot-default-external-format* 
hunchentoot::+utf-8+)

After this when I try to upload a (non-ascii) file to the file upload 
test it fails (most of the time, although occasionally it works. I used 
the same script as before to test it and usually see failures within the 
first five attempts). Also it fails manually uploading from Firefox 
(Linux and Windows), also not all the time, but frequently enough. The 
message in the log says mostly just "[error] (32)Broken pipe: error 
writing to Lisp", but occasionally I get the "Error when creating 
REQUEST object: #<SB-SYS:FD-STREAM for "file 
/tmp/hunchentoot/hunchentoot-2" {BC3ABD1}> is closed."

Now, the following might not be relevant, but in an attempt to track it 
I've set (setf hunchentoot:*catch-errors-p* nil)  and in the file 
request.lisp, method initialize-instance :after for request,  after the 
line (log-message* "Error when creating REQUEST object: ~A" cond)   I 
added  (invoke-debugger cond)

This gave me the following backtrace:

encoding error on stream
#<SB-SYS:FD-STREAM for "file /tmp/hunchentoot/hunchentoot-2" {AD456F9}>
(:EXTERNAL-FORMAT :LATIN-1):
  the character with code 1491 cannot be encoded.
   [Condition of type SB-INT:STREAM-ENCODING-ERROR]

Restarts:
 0: [OUTPUT-NOTHING] Skip output of this character.
 1: [TERMINATE-THREAD] Terminate this thread (#<THREAD 
"hunchentoot-worker-2" {BB3E2A1}>)

Backtrace:
  0: ((LAMBDA (SWANK-BACKEND::DEBUGGER-LOOP-FN))
      #<FUNCTION (LAMBDA #) {AEE1E8D}>)
  1: (SWANK::DEBUG-IN-EMACS #<SB-INT:STREAM-ENCODING-ERROR {AD491B9}>)
  2: ((LAMBDA (SWANK-BACKEND::HOOK SWANK-BACKEND::FUN))
      #<FUNCTION SWANK:SWANK-DEBUGGER-HOOK>
      #<CLOSURE (LAMBDA #) {AD493E5}>)
  3: (SWANK::CALL-WITH-REDIRECTED-IO
      #<SWANK::CONNECTION {AE568F9}>
      #<CLOSURE (LAMBDA #) {AD493F5}>)
  4: (SWANK::CALL-WITH-CONNECTION
      #<SWANK::CONNECTION {AE568F9}>
      #<CLOSURE (LAMBDA #) {AD493E5}>)
  5: (INVOKE-DEBUGGER #<SB-INT:STREAM-ENCODING-ERROR {AD491B9}>)
  6: (INVOKE-DEBUGGER #<SB-INT:STREAM-ENCODING-ERROR {AD491B9}>)
  7: (HUNCHENTOOT::MAYBE-INVOKE-DEBUGGER
      #<SB-INT:STREAM-ENCODING-ERROR {AD491B9}>)
  8: (SIGNAL #<SB-INT:STREAM-ENCODING-ERROR {AD491B9}>)
  9: (ERROR SB-INT:STREAM-ENCODING-ERROR)
 10: (SB-INT:STREAM-ENCODING-ERROR
      #<SB-SYS:FD-STREAM for "file /tmp/hunchentoot/hunchentoot-2" 
{AD456F9}>
      1491)
 11: (SB-INT:STREAM-ENCODING-ERROR
      #<SB-SYS:FD-STREAM for "file /tmp/hunchentoot/hunchentoot-2" 
{AD456F9}>
      1491)
 12: (SB-IMPL::STREAM-ENCODING-ERROR-AND-HANDLE
      #<SB-SYS:FD-STREAM for "file /tmp/hunchentoot/hunchentoot-2" 
{AD456F9}>
      1491)
 13: (SB-IMPL::OUTPUT-CHAR-LATIN-1-FULL-BUFFERED
      #<SB-SYS:FD-STREAM for "file /tmp/hunchentoot/hunchentoot-2" 
{AD456F9}>
      #\HEBREW_LETTER_DALET)
 14: (WRITE-CHAR
      #\HEBREW_LETTER_DALET
      #<SB-SYS:FD-STREAM for "file /tmp/hunchentoot/hunchentoot-2" 
{AD456F9}>)
 15: ((FLET RFC2388::RUN)
      #<SB-SYS:FD-STREAM for "file /tmp/hunchentoot/hunchentoot-2" 
{AD456F9}>)
 16: (RFC2388::READ-UNTIL-NEXT-BOUNDARY
      #<FLEXI-STREAMS::FLEXI-UTF-8-IO-STREAM {BB46BA9}>
      "127.0.0.1.0.30734.1169595060.413.2"
      NIL
      #<SB-SYS:FD-STREAM for "file /tmp/hunchentoot/hunchentoot-2" 
{AD456F9}>)
 17: (NIL
      #<unavailable argument>
      #<unavailable argument>
      #<FLEXI-STREAMS::FLEXI-UTF-8-IO-STREAM {BB46BA9}>
      "127.0.0.1.0.30734.1169595060.413.2")
 18: (HUNCHENTOOT::PARSE-RFC2388-FORM-DATA
      #<FLEXI-STREAMS::FLEXI-UTF-8-IO-STREAM {BB46BA9}>
      "multipart/form-data; boundary=127.0.0.1.0.30734.1169595060.413.2")
 19: (NIL
      (#(5 6 0 7 9 12 8 10) . #())
      #<unavailable argument>
      #<HUNCHENTOOT::REQUEST {AD3BCC9}>)

(In any case I don't presume to fully understand the machinery involved, 
but the frames 13 and 16 seem to hint that the file content is decoded 
as UTF-8 and then written as LATIN-1 ? )

Thanks,
Ury






More information about the Tbnl-devel mailing list