Changeset 33895 in project


Ignore:
Timestamp:
03/19/17 19:49:35 (8 months ago)
Author:
sjamaan
Message:

http-client: Send content-encoding: chunked instead of a zero content-length header when sending a port "file"

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/4/http-client/trunk/http-client.scm

    r33890 r33895  
    772772
    773773(define (call-with-input-request* uri-or-request writer reader)
    774   (let* ((type #f)
     774  (let* ((type-headers '())
    775775         (uri (cond ((uri-reference? uri-or-request) uri-or-request)
    776776                    ((string? uri-or-request) (uri-reference uri-or-request))
     
    798798                                   (gensym 'boundary) "=_=" (current-process-id)
    799799                                   "=-=" (current-seconds))))
    800                      (set! type `#(multipart/form-data ((boundary . ,bd))))
     800                     (set! type-headers `((content-type #(multipart/form-data ((boundary . ,bd))))))
    801801                     (prepare-multipart-chunks bd writer)))
    802802                  ;; Default to "&" because some servers choke on ";"
    803803                  ((list? writer)
    804                    (set! type 'application/x-www-form-urlencoded)
     804                   (set! type-headers
     805                     '((content-type application/x-www-form-urlencoded)))
    805806                   (list (list (or (form-urlencode writer separator: "&")
    806807                                   (http-client-error
     
    812813                                    'form-data writer)))))
    813814                  (else #f)))
     815         (size-headers (if chunks
     816                           (let ((size (calculate-chunk-size chunks)))
     817                             (if size
     818                                 `((content-length ,size))
     819                                 `((transfer-encoding chunked))))
     820                           '()))
    814821         (req (update-request
    815                req
    816                headers: (headers
    817                          `(,@(if chunks
    818                                  `((content-length
    819                                     ,(calculate-chunk-size chunks)))
    820                                  '())
    821                            ,@(if type `((content-type ,type)) '()))
    822                          (request-headers req)))))
     822               req headers: (headers `(,@size-headers ,@type-headers)
     823                                     (request-headers req)))))
    823824    (call-with-response
    824825     req
Note: See TracChangeset for help on using the changeset viewer.