mirror of
https://github.com/rkd77/elinks.git
synced 2024-12-04 14:46:47 -05:00
Work around fsp_open_session() not setting errno.
fsp_open_session() has a bug where it does not set errno if getaddrinfo fails. Before the bug 1013 fix, this caused an assertion failure. After the bug 1013 fix, this caused a "Success" error message. Now it instead causes "FSP server not found".
This commit is contained in:
parent
6c2e8cd7b2
commit
c1ffba2f95
2
NEWS
2
NEWS
@ -21,7 +21,7 @@ includes the changes listed under "ELinks 0.11.4.GIT now" below.
|
||||
JS_CallFunction, which can crash if given a closure.
|
||||
* critical bug 1031: Use the same JSRuntime for both user SMJS and
|
||||
scripts on web pages, to work around SpiderMonkey bug 378918.
|
||||
* bug 1013: Don't assume errno values are between 0 and 100000
|
||||
* bug 1013: Don't assume errno values are between 0 and 100000.
|
||||
* bug 1022: Add connection.ssl.trusted_ca_file setting for GnuTLS.
|
||||
Before this, ELinks did not trust any certificate authorities when
|
||||
it used GnuTLS, so certificate verification always failed if you
|
||||
|
@ -126,6 +126,13 @@ static const struct s_msg_dsc msg_dsc[] = {
|
||||
{S_BITTORRENT_BAD_URL, N_("The BitTorrent URL does not point to a valid URL")},
|
||||
#endif
|
||||
|
||||
/* fsp_open_session() failed but did not set errno.
|
||||
* fsp_open_session() never sends anything to the FSP server,
|
||||
* so this error does not mean the server itself does not work.
|
||||
* More likely, there was some problem in asking a DNS server
|
||||
* about the address of the FSP server. */
|
||||
{S_FSP_OPEN_SESSION_UNKN, N_("FSP server not found")},
|
||||
|
||||
{0, NULL}
|
||||
};
|
||||
|
||||
|
@ -103,6 +103,8 @@ enum connection_basic_state {
|
||||
S_BITTORRENT_METAINFO = -100801,
|
||||
S_BITTORRENT_TRACKER = -100802,
|
||||
S_BITTORRENT_BAD_URL = -100803,
|
||||
|
||||
S_FSP_OPEN_SESSION_UNKN = -100900,
|
||||
};
|
||||
|
||||
/** Either an ELinks internal status code or an error code from the
|
||||
|
@ -277,8 +277,18 @@ do_fsp(struct connection *conn)
|
||||
if (auth) password = auth->password;
|
||||
}
|
||||
|
||||
/* fsp_open_session may not set errno if getaddrinfo fails
|
||||
* https://sourceforge.net/tracker/index.php?func=detail&aid=2036798&group_id=93841&atid=605738
|
||||
* Try to detect this bug and use an ELinks-specific error
|
||||
* code instead, so that we can display a message anyway. */
|
||||
errno = 0;
|
||||
ses = fsp_open_session(host, port, password);
|
||||
if (!ses) fsp_error(connection_state_for_errno(errno));
|
||||
if (!ses) {
|
||||
if (errno)
|
||||
fsp_error(connection_state_for_errno(errno));
|
||||
else
|
||||
fsp_error(connection_state(S_FSP_OPEN_SESSION_UNKN));
|
||||
}
|
||||
|
||||
/* fsplib 0.8 ABI depends on _FILE_OFFSET_BITS
|
||||
* https://sourceforge.net/tracker/index.php?func=detail&aid=1674729&group_id=93841&atid=605738
|
||||
|
Loading…
Reference in New Issue
Block a user