mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-15 21:43:00 +02:00
Added patch for https://issues.asterisk.org/jira/browse/ASTERISK-18345
This commit is contained in:
15
lfs/asterisk
15
lfs/asterisk
@@ -37,19 +37,19 @@ DEPS = "sqlite"
|
||||
###############################################################################
|
||||
|
||||
objects = $(DL_FILE) \
|
||||
srtp-1.4.2.tar.gz \
|
||||
libsrtp-1.4.5-99426a54.tar.gz \
|
||||
asterisk-1.4-de-prompts.tar.gz \
|
||||
asterisk-extra-sounds-en-gsm-1.4.14.tar.gz \
|
||||
asterisk-moh-opsound-gsm-2.03.tar.gz
|
||||
|
||||
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
|
||||
srtp-1.4.2.tar.gz = $(URL_IPFIRE)/srtp-1.4.2.tar.gz
|
||||
libsrtp-1.4.5-99426a54.tar.gz = $(URL_IPFIRE)/libsrtp-1.4.5-99426a54.tar.gz
|
||||
asterisk-extra-sounds-en-gsm-1.4.14.tar.gz = $(URL_IPFIRE)/asterisk-extra-sounds-en-gsm-1.4.14.tar.gz
|
||||
asterisk-moh-opsound-gsm-2.03.tar.gz = $(URL_IPFIRE)/asterisk-moh-opsound-gsm-2.03.tar.gz
|
||||
asterisk-1.4-de-prompts.tar.gz = $(URL_IPFIRE)/asterisk-1.4-de-prompts.tar.gz
|
||||
|
||||
$(DL_FILE)_MD5 = 743e7dc0112e24f794453443b17ce42b
|
||||
srtp-1.4.2.tar.gz_MD5 = 7b0ffbfad9bbaf33d397027e031cb35a
|
||||
libsrtp-1.4.5-99426a54.tar.gz_MD5 = 05bfbe63a2a27343889c2436c836110a
|
||||
asterisk-extra-sounds-en-gsm-1.4.14.tar.gz_MD5 = ffc2e0ffd783c03fef5b75277dba0896
|
||||
asterisk-moh-opsound-gsm-2.03.tar.gz_MD5 = 09066f55f1358f298bc1a6e4678a3ddf
|
||||
asterisk-1.4-de-prompts.tar.gz_MD5 = 626a2b95071a5505851e43874dfbfd5c
|
||||
@@ -86,15 +86,16 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
|
||||
@$(PREBUILD)
|
||||
|
||||
# build srtp
|
||||
@rm -rf $(DIR_SRC)/srtp && cd $(DIR_SRC) && tar zxf $(DIR_DL)/srtp-1.4.2.tar.gz
|
||||
cd $(DIR_SRC)/srtp && ./configure --prefix=/usr && make uninstall && make && make install
|
||||
@rm -rf $(DIR_SRC)/srtp && cd $(DIR_SRC) && tar zxf $(DIR_DL)/libsrtp-1.4.5-99426a54.tar.gz
|
||||
cd $(DIR_SRC)/libsrtp-1.4.5 && ./configure --prefix=/usr && make uninstall && make && make install
|
||||
|
||||
# remove old directories and extract asterisk
|
||||
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
|
||||
|
||||
# patch asterisk
|
||||
cd $(DIR_APP) && patch -p4 < $(DIR_SRC)/src/patches/asterisk-no-ffmpeg.patch
|
||||
|
||||
cd $(DIR_APP) && patch -p1 < $(DIR_SRC)/src/patches/asterisk-ssl-reader-should-block.patch
|
||||
|
||||
# configure asterisk
|
||||
cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/var/ipfire \
|
||||
--without-oss \
|
||||
@@ -148,7 +149,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
|
||||
ln -f -s /var/ipfire/asterisk/wakeup/wakeup.sh /etc/fcron.minutely/wakeup.sh
|
||||
|
||||
# be sure all source is removed
|
||||
@rm -rf $(DIR_APP) $(DIR_SRC)/asterisk-*
|
||||
@rm -rf $(DIR_APP) $(DIR_SRC)/asterisk-* $(DIR_SRC)/libsrtp*
|
||||
|
||||
# remember backup-location
|
||||
install -v -m 644 $(DIR_SRC)/config/backup/includes/asterisk /var/ipfire/backup/addons/includes/asterisk
|
||||
|
||||
28
src/patches/asterisk-ssl-reader-should-block.patch
Normal file
28
src/patches/asterisk-ssl-reader-should-block.patch
Normal file
@@ -0,0 +1,28 @@
|
||||
Upstream issue 18345
|
||||
Link: https://issues.asterisk.org/jira/browse/ASTERISK-18345
|
||||
Patch-By: Filip Jenicek
|
||||
|
||||
Submitted upstream: 2012-05-31 09:12
|
||||
For Asterisk version: 1.8.4
|
||||
|
||||
The HOOK_T ssl_read function should behave the same way as the system read function
|
||||
by blocking and waiting for (more) data from the SSL subsystem. Failure to do this
|
||||
will drop data on the floor and ultimately disconnect SSL clients.
|
||||
|
||||
--- asterisk/main/tcptls.c
|
||||
+++ asterisk/main/tcptls.c
|
||||
@@ -55,6 +55,14 @@
|
||||
static HOOK_T ssl_read(void *cookie, char *buf, LEN_T len)
|
||||
{
|
||||
int i = SSL_read(cookie, buf, len-1);
|
||||
+
|
||||
+ /* ssl_read should block and wait for the SSL layer to provide all data */
|
||||
+ while (i < 0 && SSL_get_error(cookie, i) == SSL_ERROR_WANT_READ) {
|
||||
+ ast_debug(1, "SSL_read - data not ready.\n");
|
||||
+ if (ast_wait_for_input(SSL_get_fd(cookie), 5000) <= 0) return 0;
|
||||
+ i = SSL_read(cookie, buf, len-1);
|
||||
+ }
|
||||
+
|
||||
#if 0
|
||||
if (i >= 0)
|
||||
buf[i] = '\0';
|
||||
Reference in New Issue
Block a user