emacs的xml-rpc的小补丁一个,解决无法post到godaddy站点

接到电信总部通知,说根据XX规定,不允许我将域名绑到自己的宽带上,不然就停封帐号

算一算,绑定了好几周,只是最近为了学习org-mode,所以发了一大堆图片,然后就立 刻接到电话了,话说我找他们办事的时候就没这么快。

因此,我在godaddy买了个空间,整个过程还顺利,不一会就将所有的切换到新的空间上了

然后,测下速度,也还算满意,比我自己家里快。然后,接着使用emacs测试下看能否 正常发blog了。

悲剧出现, org2blog在登录的这一步,一直说404错误,而在我的其他的任何一个环境中测试,都很正常

找遍了网络,升级xml-rpc.el,配置服务器这个,配置服务器那个,修改xmlrpc.php,都找不到解决方式, 我甚至都给godaddy发送邮件,询问是不是服务器是不是有什么限制了,趁着等邮件的 时候,研究org2blog的代码调用,研究到xml-rpc.el,打开调试,看最终发送的是什么。然后使用 curl模拟发送,结果没想到curl竟然可以发送成功,然后各种测试,模拟,不管哪个头 标识,curl模拟下来都非常正常,但 emacs死活是不行

我非常的生气,后果很严重,于是,决定看看网络传输的到底是什么数据

下载windump(我在windows机器上,ubuntu 12.04上的那个emacs版本太低,还需要重新 配置),研究windump的使用方式,然后dump数据,分析emacs发送数据和curl的区别,真 的要弄瞎我的近视眼啊

一个字段一个字段的比较下来,都没问题,字段都一样,只是顺序不一样,我觉的这个不是问题

一遍又一遍,甚至我都想要测试回车符有没有影响了,突然,我注意到emacs比curl多了一个字段

“Connection: keep-alive”, 在curl这边,这个值只出现了一次,而在emacs这边,这 个值出现了两次,也就是说,某个地方设置了两次,难道这个?我都在怀疑自己的判断 了。

瞎猫碰死耗子吧,我修改了下xml-rpc.el,结果,它居然正常了。

看来问题就出现在两次”Connection: keep-alive”上,于是,就有了以下的补丁(我用 的是1.6.7,最新的可能是1.6.8)

diff --git a/xml-rpc.el b/xml-rpc.el
index 16c4cb1..bb23ecb 100644
--- a/xml-rpc.el
+++ b/xml-rpc.el
@@ -13,7 +13,7 @@
 ;; Keywords: xml rpc network
 ;; URL: http://emacswiki.org/emacs/xml-rpc.el
 ;; Maintained-at: http://savannah.nongnu.org/bzr/?group=emacsweblogs
-;; Last Modified: <Zhang_Ze 2009-12-15 16:51:25>
+;; Last Modified: <--==RIX==-- 2014-05-24 22:29:52>

 ;; This file is NOT (yet) part of GNU Emacs.

@@ -521,7 +521,7 @@ or nil if called with ASYNC-CALLBACK-FUNCTION."
          (url-request-coding-system xml-rpc-use-coding-system)
          (url-http-attempt-keepalives t)
          (url-request-extra-headers (list
-                                          (cons "Connection" "keep-alive")
+                                          ;(cons "Connection" "keep-alive")
                      (cons "Content-Type"
                                                 "text/xml; charset=utf-8"))))
      (when (> xml-rpc-debug 1)

1条评论

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据