diff options
author | Vicențiu Ciorbaru <vicentiu@mariadb.org> | 2016-01-26 16:33:06 +0200 |
---|---|---|
committer | Vicențiu Ciorbaru <vicentiu@mariadb.org> | 2016-01-26 21:42:37 +0200 |
commit | 7d39b28093b06ea67318c257057e93cf891ce896 (patch) | |
tree | be0d6ce2382d20940fb921eb1824a515cf593c58 /mysys/my_addr_resolve.c | |
parent | d227399318fc9cb43afa0fae17ac4d8a7cfdade3 (diff) | |
download | mariadb-git-7d39b28093b06ea67318c257057e93cf891ce896.tar.gz |
[MDEV-9468]: Client hangs in my_addr_resolve
Account for timeout of select returning a 0 error code.
Diffstat (limited to 'mysys/my_addr_resolve.c')
-rw-r--r-- | mysys/my_addr_resolve.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/mysys/my_addr_resolve.c b/mysys/my_addr_resolve.c index 0b1c60c4131..72b04119855 100644 --- a/mysys/my_addr_resolve.c +++ b/mysys/my_addr_resolve.c @@ -175,6 +175,10 @@ int my_addr_resolve(void *ptr, my_addr_loc *loc) sizeof(output) - total_bytes_read); if (extra_bytes_read < 0) return 1; + /* Timeout or max bytes read. */ + if (extra_bytes_read == 0) + break; + total_bytes_read += extra_bytes_read; } @@ -183,7 +187,7 @@ int my_addr_resolve(void *ptr, my_addr_loc *loc) return 1; /* Go through the addr2line response and get the required data. - The response is structured in 2 lnes. The first line contains the function + The response is structured in 2 lines. The first line contains the function name, while the second one contains <filename>:<line number> */ for (i = 0; i < total_bytes_read; i++) { if (output[i] == '\n') { |