[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 2/2] scripts: Add 'publish' command.
From: |
David Thompson |
Subject: |
Re: [PATCH 2/2] scripts: Add 'publish' command. |
Date: |
Sun, 29 Mar 2015 13:29:58 -0400 |
User-agent: |
Notmuch/0.18.2 (http://notmuchmail.org) Emacs/24.4.1 (x86_64-pc-linux-gnu) |
Mark H Weaver <address@hidden> writes:
> address@hidden (Ludovic Courtès) writes:
>
>> David Thompson <address@hidden> skribis:
>>
>>> +(define (render-nar request store-item)
>>> + "Render archive of the store path corresponding to STORE-ITEM."
>>> + (let ((store-path (string-append %store-directory "/" store-item)))
>>> + ;; The ISO-8859-1 charset *must* be used otherwise HTTP clients will
>>> + ;; interpret the byte stream as UTF-8 and arbitrarily change invalid
>>> byte
>>> + ;; sequences.
>>> + (if (file-exists? store-path)
>>> + (values '((content-type . (application/x-nix-archive
>>> + (charset . "ISO-8859-1"))))
>>> + (lambda (port)
>>> + (write-file store-path port)))
>>> + (not-found request))))
>>
>> This is OK for now, but I just realized that this will be blocking the
>> server for the duration of the whole transfer. Someone could DoS you by
>> substituting TeX Live. ;-)
>>
>> We’ll need a solution but it seems that it’ll be hard to avoid threads.
>>
>> Thoughts?
>
> I haven't looked closely, but how about using subprocesses instead of
> threads?
That's along the lines of what I was thinking. One could spawn a bunch
of 'guix publish' processes on different ports and put a load balancer
in front of them.
I think that this problem, if it is to be solved with more Scheme code,
is an issue to address in Guile core by changing the http server
implementation.
--
David Thompson
Web Developer - Free Software Foundation - http://fsf.org
GPG Key: 0FF1D807
Support the FSF: https://fsf.org/donate
Re: [PATCH 0/2] Add 'guix publish' command, David Thompson, 2015/03/17