diff options
author | Tim Rühsen <tim.ruehsen@gmx.de> | 2019-03-05 12:22:56 +0000 |
---|---|---|
committer | Tim Rühsen <tim.ruehsen@gmx.de> | 2019-03-05 12:22:56 +0000 |
commit | 80295b4962dd2eadd0f91a7864c11bac469a5135 (patch) | |
tree | 1f97a529d36566cdbc37265aef5a8f1374e2130e /src | |
parent | cadf85bfbe58a7557416f42af6c054fec9e1f9e5 (diff) | |
parent | e6d9cb28fc1d82e97b9f65cde8e642645d6e9ed5 (diff) | |
download | gnutls-80295b4962dd2eadd0f91a7864c11bac469a5135.tar.gz |
Merge branch 'tmp-fix-cli-starttls-xmpp' into 'master'
gnutls-cli: Fix --starttls-proto=xmpp
Closes #697
See merge request gnutls/gnutls!911
Diffstat (limited to 'src')
-rw-r--r-- | src/socket.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/socket.c b/src/socket.c index dcffe6bc9c..20b17cef3c 100644 --- a/src/socket.c +++ b/src/socket.c @@ -177,13 +177,13 @@ ssize_t wait_for_text(socket_st * socket, const char *txt, unsigned txt_size) tv.tv_sec = 10; tv.tv_usec = 0; ret = select(socket->fd + 1, &read_fds, NULL, NULL, &tv); - if (ret <= 0) - ret = -1; - else + if (ret > 0) ret = recv(socket->fd, pbuf, left, 0); - if (ret == -1 || ret == 0) { - int e = errno; - fprintf(stderr, "error receiving %s: %s\n", txt, strerror(e)); + if (ret == -1) { + fprintf(stderr, "error receiving '%s': %s\n", txt, strerror(errno)); + exit(2); + } else if (ret == 0) { + fprintf(stderr, "error receiving '%s': Timeout\n", txt); exit(2); } pbuf[ret] = 0; @@ -204,8 +204,8 @@ ssize_t wait_for_text(socket_st * socket, const char *txt, unsigned txt_size) p = memmem(buf, got, txt, txt_size); if (p != NULL && p != buf) { p--; - if (*p == '\n' || *p == '\r') - break; + if (*p == '\n' || *p == '\r' || (*txt == '<' && *p == '>')) // XMPP is not line oriented, uses XML format + break; } } } while(got < txt_size || strncmp(buf, txt, txt_size) != 0); |