文件tcp_socket.cpp中write函數發生變更,可以去github上看master版本的src/tcp_socket.cpp 點這裡前往github
說下影響,在之前2.2.0版本,其實write函數是這樣的
然後在我以前另外一篇文章中(見http://www.linuxidc.com/Linux/2013-03/80273.htm)有提到過zeromq需要注意的一些細節中有說到很容易碰到connection timeout的錯誤並告知怎麼更改。
最近有碰到在write的時候發生Connection refused 錯誤也就是errno是ECONNREFUSED,還正在想自己加個過濾算了,不過去了github上看了下最新代碼,發現代碼變更了
對錯誤處理的更加友好,而不會向之前對一些比較容易發生的錯誤直接中斷。
下面這部分是直接文本copy過來的。
if (nbytes == -1
&& (errno == ECONNRESET
|| errno == EPIPE
|| errno == ETIMEDOUT))
if (nbytes == -1) {
errno_assert (errno != EACCES
&& errno != EBADF
&& errno != EDESTADDRREQ
&& errno != EFAULT
&& errno != EINVAL
&& errno != EISCONN
&& errno != EMSGSIZE
&& errno != ENOMEM
&& errno != ENOTSOCK
&& errno != EOPNOTSUPP);
return -1;
}
errno_assert (nbytes != -1);
return (size_t) nbytes;
}