История изменений
Исправление Zubok, (текущая версия) :
Почему тогда у тебя при let связывании (url-privacy-level '(agent)) работает как нужно
Сработало тогда только https, на самом деле. Я плохо поставил эксперимент. А через http не сработало.
У меня еще вот такой код нормально сработал:
У меня такой код не сработал на http и сработал на https. Я попробовал и example.com, и другие адреса. У меня версия здесь - гонки. В одном случае будет работать, а в другом не будет. Причем еще интересные эффекты возникают, если несколько одинаковых запросов друг за другом сделать: иногда срабатывает '(agent) и 'paranoid. Кусок исходного кода намекает на это:
(let ((status (process-status connection)))
(cond
((eq status 'connect)
;; Asynchronous connection
(set-process-sentinel connection 'url-http-async-sentinel))
((eq status 'failed)
;; Asynchronous connection failed
(error "Could not create connection to %s:%d" host port))
(t
(set-process-sentinel connection 'url-http-end-of-document-sentinel)
(process-send-string connection (url-http-create-request)))))))
Как видно, в зависимости от статуса connection (статусы можно посмотреть в C-h f process-status) формирование заголовков (функция url-http-create-request) происходит либо в url-http-async-sentinel в случае статуса 'connect, которая вызывается не из url-retrieve, либо же формирование заголовков здесь же (самый последний вариант cond в коде, когда, например, status уже 'open).
Исправление Zubok, :
Почему тогда у тебя при let связывании (url-privacy-level '(agent)) работает как нужно
Сработало тогда только https, на самом деле. Я плохо поставил эксперимент. А через http не сработало.
У меня еще вот такой код нормально сработал:
У меня такой код не сработал на http и сработал на https. Я попробовал и example.com, и другие адреса. У меня версия здесь - гонки. В одном случае будет работать, а в другом не будет. Причем еще интересные эффекты возникают, если несколько одинаковых запросов друг за другом сделать: иногда срабатывает '(agent) и 'paranoid. Кусок исходного кода намекает на это:
(let ((status (process-status connection)))
(cond
((eq status 'connect)
;; Asynchronous connection
(set-process-sentinel connection 'url-http-async-sentinel))
((eq status 'failed)
;; Asynchronous connection failed
(error "Could not create connection to %s:%d" host port))
(t
(set-process-sentinel connection 'url-http-end-of-document-sentinel)
(process-send-string connection (url-http-create-request)))))))
Как видно, в зависимости от статуса connection (статусы можно посмотреть в C-h f process-status) формирование заголовков (функция url-http-create-request) происходит либо в url-http-async-sentinel, которая вызывается не из url-retrieve, либо же здесь же (самый последний вариант cond в коде, когда, например, status уже 'open).
Исходная версия Zubok, :
Почему тогда у тебя при let связывании (url-privacy-level '(agent)) работает как нужно
Сработало тогда только https, на самом деле. Я плохо поставил эксперимент. А через http не сработало.
У меня еще вот такой код нормально сработал:
У меня такой код не сработал на http и сработал на https. Я попробовал и example.com, и другие адреса. У меня версия здесь - гонки. В одном случае будет работать, а в другом не будет. Причем еще интересные эффекты возникают, если несколько одинаковых запросов друг за другом сделать: иногда срабатывает '(agent) и 'paranoid. Кусок исходного кода намекает на это:
(let ((status (process-status connection)))
(cond
((eq status 'connect)
;; Asynchronous connection
(set-process-sentinel connection 'url-http-async-sentinel))
((eq status 'failed)
;; Asynchronous connection failed
(error "Could not create connection to %s:%d" host port))
(t
(set-process-sentinel connection 'url-http-end-of-document-sentinel)
(process-send-string connection (url-http-create-request)))))))
Как видно, в зависимости от статуса connection (статусы можно посмотреть в C-h C-f process-status) формирование заголовков (функция url-http-create-request) происходит либо в url-http-async-sentinel, которая вызывается не из url-retrieve, либо же здесь же (самый последний вариант cond в коде, когда, например, status уже 'open).