Re: PHP 5.2.6 + pdo_dblib + FreeTDS 0.64 -- tds_open_socket: Unknown error: 0
"James K. Lowden" <[email protected]>
| Newsgroups | gmane.comp.db.tds.freetds |
|---|---|
| Message-ID | <[email protected]> |
Kian Mohageri wrote:
> 19:27:18.240697 12864 (net.c:210):Connecting to 140.160.12.123 port
> 2638 (TDS version 5.0)
> 19:27:18.240926 12864 (net.c:264):tds_open_socket: connect(2) returned
> "Unknown error: 0"
I can tell you what's happening, but not why. I suspect it's some kind of
local network setup problem, perhaps a firewall or permissions.
Here's the relevant code from src/tds/net.c:
retval = connect(tds->s,
(struct sockaddr *) &sin,
sizeof(sin));
if (retval == 0) {
tdsdump_log(TDS_DBG_INFO2,
"connection established\n");
} else {
tdsdump_log(TDS_DBG_ERROR,
"tds_open_socket: connect(2) returned \"%s\"\n",
strerror(sock_errno));
...
http://www.opengroup.org/onlinepubs/000095399/functions/connect.html
connect(2) may return only 0 or -1, and should set errno. It appears to
be returning nonzero, but not setting errno. (sock_errno is just errno
except on Win32.) That is, it reports failure but not why.
The only conclusion I can draw is that your FreeTDS configuration is
correct, but something is amiss with your network setup that prevents your
PHP application from forming the connection. Moreover, IMO you have a
FreeBSD bug, because a non-zero return code from connect(2) must be
accompanied by a valid errno value.
HTH. :-/
--jkl