Commit Graph

22 Commits

Author SHA1 Message Date
OmriSteiner 392de5d7f9
fix #785: defer TCP_NODELAY in async tcp connections (#836)
Co-authored-by: Omri Steiner <omri@insoundz.com>
2020-06-22 13:20:30 -07:00
Michael Grunder 6448f735d5
sdsrange overflow fix (#830)
Fix overflow bug in `sdsrange`
2020-06-07 14:38:16 -07:00
m 1788f41f16 Move network I/O calls to net.c
This makes hiredis.c free from system calls related to socket I/O. This
is also makes the treatment of raw socket connections more similar to
the SSL backend.
2019-04-01 11:52:24 +02:00
Mark Nunberg cbe4ae63ae Handle connection errors better in blocking mode as well 2018-09-25 20:21:40 -04:00
Mark Nunberg 49974c9359 Call connect(2) again for non-blocking connect
This retrieves the actual error which occurred, as getsockopt is not
always reliable in this regard.
2018-09-25 20:21:37 -04:00
Justin Brewer bbeab80090 Use AF_UNIX
AF_LOCAL is the old, non-standardized name for AF_UNIX. Just use
AF_UNIX, rather than wrestling with platform specifics of AF_LOCAL
definitions.

Signed-off-by: Justin Brewer <jzb0012@auburn.edu>
2018-04-28 16:35:38 -05:00
Jan-Erik Rediger 952a33f298 Make it compile on IBM AIX systems
Closes #422
2018-01-06 13:25:35 +01:00
Jan-Erik Rediger af598dbce5 Change copyright date and add copyright holder 2015-04-16 21:29:41 +02:00
Pieter Noordhuis a9c21e4d48 Fix const correctness 2014-04-09 22:30:04 -07:00
Matt Stancliff 37d25a392c Add ability to bind source address on connect
Some environments require binding to specific source addresses instead
of letting the system determine which IP a connection should originate
from.

Closes #233
2014-04-08 19:37:54 -04:00
Matt Stancliff 7f0c7a29fd Remove possiblity of multiple close on same fd
With all the async connects and disconnects and error handling
going on in hiredis, we need to centralize how we close our fd
and set it so it doesn't get re-closed.  Prior to this commit,
sometimes we'd close(fd), run an async error handler, then
call close(fd) again.

To stop multiple closes, we now set fd to -1 after we free it,
but that requires not passing fd as an independent argument to
functions.

This commit moves all fd usage to c->fd.  Since the context
has a fd field and all functions receive the context, it makes
more sense to use the fd inside of c instead of passing along fd
as an independent argument.

Also, by only using c->fd, we can set c->fd after we close it to
signify we shouldn't re-close the same fd again.

This does change one semi-public interface function redisCheckSocketError()
to only take (context) instead of (context, fd).  A search on github
returned zero occasions of people using redisCheckSocketError()
outside of net.{c,h} in hiredis itself.

Commit inspired by the bug report at:
https://groups.google.com/forum/#!topic/redis-db/mQm46XkIPOY

Thanks go out to Thijs for trying high-frequency reconnects on
a host that isn't there.

Closes #230
2014-04-08 19:37:29 -04:00
Noah Williamsson fbf1bb648e Mark the timeout parameter as const in various functions
The struct timeval argument in redisConnectWithTimeout(),
redisConnectUnixWithTimeout(), redisSetTimeout(),
redisContextSetTimeout(), redisContextConnectTcp()
and redisContextConnectUnix() is never modified and can
therefore be marked as const.

Signed-off-by: Noah Williamsson <noah.williamsson@gmail.com>
2013-07-10 23:34:49 -07:00
Allen.Dou 9dff5105fc Make KeepAlive optional
Make Connection KeepAlive being optional instead of default.
2013-04-30 00:11:57 +08:00
Pieter Noordhuis e6d997a96f Extract function to check a socket for errors 2011-06-27 23:42:18 +02:00
Pieter Noordhuis 0cb7c27d9c Update license 2011-04-21 22:46:23 +02:00
Pieter Noordhuis 2fc0d8756e Use select(2) for enforce a timeout on blocking connect(2) 2011-02-04 15:26:28 +01:00
Pieter Noordhuis 43ab0f8018 Return error on socket timeout for a blocking context 2011-01-07 13:04:42 +01:00
Pieter Noordhuis a020db3013 License 2010-12-29 15:52:07 +01:00
Pieter Noordhuis 7e4ce57367 Solaris doesn't know AF_LOCAL 2010-12-16 22:59:07 +01:00
Pieter Noordhuis 0ccb2c8d89 Add functiont to net.c to connect to a unix socket 2010-11-03 11:31:33 +01:00
Pieter Noordhuis b8b296654d Strip net.c down to the bare minimum 2010-11-02 17:09:26 +01:00
Pieter Noordhuis dd8a34de84 Move anet.{c,h} to net.{c,h} 2010-11-02 16:44:44 +01:00