summaryrefslogtreecommitdiff
path: root/main/tcptls.c
diff options
context:
space:
mode:
authorTilghman Lesher <tilghman@meg.abyt.es>2009-02-04 18:48:06 +0000
committerTilghman Lesher <tilghman@meg.abyt.es>2009-02-04 18:48:06 +0000
commitf2fd6528a2ebc975d5fe297928e6f5926824c289 (patch)
tree204b04cc2d506eb4aa34574c8cf0bf4080b26d14 /main/tcptls.c
parente04e940a7194cd067d82801324230b91b10982c5 (diff)
When using a socket as a FILE *, the stdio functions will sometimes try to do
an fseek() on the stream, which is an invalid operation for a socket. Turning off buffering explicitly lets the stdio functions know they cannot do this, thus avoiding a potential error. (closes issue #14400) Reported by: fnordian Patches: tcptls.patch uploaded by fnordian (license 110) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@173458 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/tcptls.c')
-rw-r--r--main/tcptls.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/main/tcptls.c b/main/tcptls.c
index 6aa0db800..973a94b71 100644
--- a/main/tcptls.c
+++ b/main/tcptls.c
@@ -135,8 +135,10 @@ static void *handle_tls_connection(void *data)
/*
* open a FILE * as appropriate.
*/
- if (!tcptls_session->parent->tls_cfg)
+ if (!tcptls_session->parent->tls_cfg) {
tcptls_session->f = fdopen(tcptls_session->fd, "w+");
+ setvbuf(tcptls_session->f, NULL, _IONBF, 0);
+ }
#ifdef DO_SSL
else if ( (tcptls_session->ssl = SSL_new(tcptls_session->parent->tls_cfg->ssl_ctx)) ) {
SSL_set_fd(tcptls_session->ssl, tcptls_session->fd);