121 Commits

Author SHA1 Message Date
Luca Boccassi
25bf30bebe Problem: 2 connects with same sourceip:port to different destip:port fail
Solution: during a connect with a TCP endpoint if a source address is
passed set the SO_REUSEADDR flag on the socket before the bind system
call.
Add unit test to cover this case for both IPv4 and IPv6.
2016-10-23 22:31:45 +01:00
Yann Diorcet
9835e18f64 Fix compilation with mingw64 using autotools 2016-06-01 15:07:16 +02:00
evoskuil
2b798e486a Problem: name conflicts from windows.h, draft API declared in pch. 2016-05-13 20:41:26 -07:00
KIU Shueng Chuan
bb4bcf8f45 fix: sockets are not signed int on Windows 2016-05-08 16:29:15 +08:00
Doron Somech
4012538ce4 problem: srcfd is broken 2016-05-04 15:33:19 +03:00
hitstergtd
a31c508979 Problem: tune_tcp* related code has style issues
Solution: fix it
2016-05-01 14:42:27 +01:00
Luca Boccassi
99a8795dfe Problem: zmq_connect (TCP) has no IPv4 fallback
Solution: if opening an IPv6 TCP socket fails because IPv6 is not
available, try to open an IPv4 socket instead when creating and
connecting a TCP endpoint.
2016-04-07 13:29:10 +01:00
Luca Boccassi
a6e49860f5 Problem: tcp_connecter_t initialization reorder
Solution: initialize class variable in the same order as they are
defined.
2016-02-21 23:43:09 +00:00
Luca Boccassi
d4c0716473 Problem: indentation should be 4 spaces, no tabs
Solution: fix it
2016-02-21 23:16:44 +00:00
Osiris
b3d5fa63a0 Problem: Several problems found by Coverity Static Analyzer
Solution: The Coverity Static Code Analyzer was used on libzmq code and found
many issues with uninitialized member variables, some redefinition of variables
hidding previous instances of same variable name and a couple of functions
where return values were not checked, even though all other occurrences were
checked (e.g. init_size() return).
2016-02-21 15:49:47 -06:00
Osiris
4a5af9d58b Problem: Precompiled headers not being used
Solution: Phase I - make precompiled.hpp be first file included in every source file
2016-02-18 10:56:52 -06:00
Pieter Hintjens
da8ce55a14 Problem: ZMQ_TCP_RETRANSMIT_TIMEOUT is a clumsy name
Solution: rename to ZMQ_MAXRT

This is the option name used on Windows, so easier to use and
remember.
2016-02-09 10:53:52 +01:00
Constantin Rack
a539b0c6e8 Problem: copyright year is still 2015
Solution: update to 2016
2016-01-28 15:07:31 +01:00
William Swanson
b2010432c7 Do not crash on unusual connection-failure cases
Only assert on errors we know are our fault,
instead of trying to whitelist every possible network-related failure.
This makes ZeroMQ more portable to other platforms
where the possible errors are different.

In particular, the previous code would often die under iOS.
2015-11-02 14:59:15 -08:00
PP
5dc8b51ceb Fixed the bug which cause the application crashed when use TCP connect to an invalid address(such as 192.168.1.255). 2015-09-17 16:59:25 +08:00
Constantin Rack
bd923f0fbb Problem: some comments contain typos 2015-09-06 18:46:32 +02:00
Joe Eli McIlvain
33419425eb Problem: Private/internal macros defined in public header.
Solution: Move the macros to a private header.
2015-08-21 16:12:22 -07:00
reza.ebrahimi
1621c25ef0 define a macro for heap object deletion in a unified manner (related to issue #1524) 2015-08-17 00:35:11 +04:30
reza.ebrahimi
8e6ef4616e changing some camelCase variable names to snake_case in previous commit 2015-08-14 16:56:07 +04:30
reza.ebrahimi
d7b74d1f57 remove unnecessary multiple WSAGetLastError() calls 2015-08-14 16:29:18 +04:30
KIU Shueng Chuan
ca9215de1e add ZMQ_TCP_RETRANSMIT_TIMEOUT socket option 2015-08-06 23:36:27 +08:00
KIU Shueng Chuan
eeb697b5ac add connect timeout logic 2015-08-04 22:17:02 +08:00
KIU Shueng Chuan
4a0bde8130 rename timer_started to reconnect_timer_started 2015-08-04 22:17:02 +08:00
Juha Reunanen
f7b933f570 LIBZMQ-195 allow explicitly setting sndbuf and rcvbuf to 0 (see https://support.microsoft.com/en-us/kb/201213) 2015-07-08 11:31:34 +03:00
Pieter Hintjens
8620c3e032 Problem: source file headers are somewhat confusing about LGPLv3
Of course people still "can" distributed the sources under the
LGPLv3. However we provide COPYING.LESSER with additional grants.

Solution: specify these grants in the header of each source file.
2015-06-02 22:33:55 +02:00
evoskuil
30bd7c481e Fix integer narrowing issues. 2015-04-21 22:26:32 -07:00
Pieter Hintjens
94d9a4ffdf Problem: copyright statements are out of date
Solution: update for 2015

Fixes #1320
2015-01-22 10:32:37 +01:00
Tom Whittock
993cb32e96 Windows: if WSA error number is held, use directly.
It must be done this way, as WSAGetLastError returns 0 in these circumstances
2014-07-07 16:33:53 +01:00
Martin Hurton
706eb4da8d Code cleanup 2014-06-07 23:05:45 +02:00
Matthias Kluwe
fa95d0b5e8 removed whitespace
(accidentially used my preferred style)
2014-06-05 19:39:15 +02:00
Matthias Kluwe
5154c544ff handle WSAEADDRINUSE in tcp_connecter_t::connect
As mentioned on the mailing list, Windows may return WSAEADDRINUSE when binding
(reconnecting) to a port. Added this to the handled error codes as Pieter
suggested.
2014-06-05 19:29:42 +02:00
nikita kozlov
acb6807041 Allow to set up a source address and port for outgoing tcp connections in zmq_connect()
Few examples:
tcp:://192.168.0.4:55555;192.168.0.254:1234
tcp:://192.168.0.4:0;192.168.0.254:1234
tcp:://eth2:55555;192.168.0.254:1234
2014-04-30 14:43:37 +02:00
Mark Barbisan
350a1ac12b Allow TCP addresses to be re-resolved whenever there is a reconnection attempt 2014-03-12 13:28:37 -04:00
Goswin von Brederlow
92f8f244e2 Store socket FD after connect 2014-01-17 23:30:17 +01:00
Pieter Hintjens
b3b9e046ee Updated copyright statements for 2014 2014-01-02 12:00:57 +01:00
Chris Laws
38bceca9ca Add ability to set and get DSCP socket option 2013-11-25 13:31:21 +10:30
NetImperia
c75ed69af3 Update tcp_connecter.cpp
Crash Fix: Assertion failed: Permission denied (..\..\..\src\tcp_connecter.cpp:279) on windows 8
2013-10-30 18:16:06 -07:00
Martin Hurton
afe9afa2a5 Set socket buffers before establishing TCP connection
The window scale option carried in SYN segment is computed from socket's
receive buffer size. So we need to set this buffer size before calling
connect or bind.
2013-06-30 07:30:51 +02:00
Pieter Hintjens
f909b9c722 plain_mechanism now uses options.as_server
- we need to switch to PLAIN according to options.mechanism
- we need to catch case when both peers are as-server (or neither is)
- and to use username/password from options, for client
2013-05-17 17:21:59 +01:00
Martin Hurton
4eecda8af3 Implement ZMTP/3.0 PLAIN mechanism
This implements protocol handshake.
We still need to design and implement 1) API changes so a user
can set username and password, and 2) a mechanism for engine
to authenticate users.
2013-05-14 11:20:13 +02:00
Pieter Hintjens
710f38f1cc Fixed syntax error 2013-04-22 15:12:53 +02:00
Pieter Hintjens
f4dbccd4fb Fix for LIBZMQ-526 2013-04-22 14:51:09 +02:00
Pieter Hintjens
785ef41f67 Refactored codecs to match ZMTP version numbers 2013-03-12 15:29:37 +01:00
Pieter Hintjens
f0f16505e5 Removed corporate advertisements from source file headers
Copyrights had become ads for Sustrik's corporate sponsors, going against the original
agreement to share copyrights with the community (that agreement was: one line stating
iMatix copyright + one reference to AUTHORS file). The proliferation of corporate ads
is also unfair to the many individual authors. I've removed ALL corporate title from
the source files so the copyright statements can now be centralized in AUTHORS and
source files can be properly updated on an annual basis.
2013-03-12 13:24:57 +01:00
Lourens Naudé
6d245eb6bc Copy monitor specific event endpoints to event messages as the engine etc. can be released at anytime 2012-11-17 11:29:47 +00:00
Pieter Hintjens
4ba34c9d70 Whitespace and style fixes 2012-10-24 09:18:52 +09:00
Lourens Naudé
759d453368 Significantly reworked the monitoring infrastructure with a more granular per socket API and to play well with monitoring endpoints in application threads 2012-09-21 12:53:31 +01:00
Lourens Naudé
9dc248f6ab Fix invalid address metadata for ZMQ_EVENT_DISCONNECTED 2012-08-04 11:41:33 +01:00
Martin Hurton
c84ca01e95 Be more conservative about when to generate ZMQ_EVENT_CLOSE_FAILED
This also fixes a bug in tcp_connecter and tcp_listener, which
generated the event not when they failed to close the socket but
when the succeed to close it.
2012-07-11 19:02:31 +02:00
Martin Hurton
919bd9628d {tcp|ipc}_connecter: check whether socket is valid before closing it
Calling close () when the underlying socket is invalid
triggers an assertion failure.
2012-06-15 02:38:47 +02:00