Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Icecast-Server
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
93
Issues
93
List
Boards
Labels
Service Desk
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
External Wiki
External Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Xiph.Org
Icecast-Server
Commits
19cb11cc
Commit
19cb11cc
authored
Apr 18, 2005
by
Karl Heyes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
merge in a few fixes and cleanups I've accumulated in my branch.
svn path=/icecast/trunk/icecast/; revision=9152
parent
f502efd2
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
95 additions
and
68 deletions
+95
-68
src/admin.c
src/admin.c
+1
-1
src/connection.c
src/connection.c
+10
-3
src/format_mp3.c
src/format_mp3.c
+28
-19
src/format_mp3.h
src/format_mp3.h
+1
-1
src/format_ogg.c
src/format_ogg.c
+2
-0
src/format_vorbis.c
src/format_vorbis.c
+8
-2
src/slave.c
src/slave.c
+27
-25
src/source.c
src/source.c
+13
-14
src/stats.c
src/stats.c
+2
-0
src/xslt.c
src/xslt.c
+3
-3
No files found.
src/admin.c
View file @
19cb11cc
...
@@ -978,7 +978,7 @@ static void command_list_mounts(client_t *client, int response)
...
@@ -978,7 +978,7 @@ static void command_list_mounts(client_t *client, int response)
{
{
source_t
*
source
=
(
source_t
*
)
node
->
key
;
source_t
*
source
=
(
source_t
*
)
node
->
key
;
node
=
avl_get_next
(
node
);
node
=
avl_get_next
(
node
);
if
(
source
->
hidden
)
if
(
source
->
hidden
||
source
->
running
==
0
)
continue
;
continue
;
remaining
-=
ret
;
remaining
-=
ret
;
buf
+=
ret
;
buf
+=
ret
;
...
...
src/connection.c
View file @
19cb11cc
...
@@ -482,6 +482,7 @@ int connection_complete_source (source_t *source)
...
@@ -482,6 +482,7 @@ int connection_complete_source (source_t *source)
if
(
source
->
client
)
if
(
source
->
client
)
client_send_404
(
source
->
client
,
"internal format allocation problem"
);
client_send_404
(
source
->
client
,
"internal format allocation problem"
);
WARN1
(
"plugin format failed for
\"
%s
\"
"
,
source
->
mount
);
WARN1
(
"plugin format failed for
\"
%s
\"
"
,
source
->
mount
);
source
->
client
=
NULL
;
return
-
1
;
return
-
1
;
}
}
...
@@ -708,7 +709,7 @@ static void _handle_source_request(connection_t *con,
...
@@ -708,7 +709,7 @@ static void _handle_source_request(connection_t *con,
* protocol: attempt to diagnose this and return an error
* protocol: attempt to diagnose this and return an error
*/
*/
/* TODO: Do what the above comment says */
/* TODO: Do what the above comment says */
WARN
1
(
"Source (%s) attempted to login with invalid or missing password"
,
uri
);
INFO
1
(
"Source (%s) attempted to login with invalid or missing password"
,
uri
);
client_send_401
(
client
);
client_send_401
(
client
);
return
;
return
;
}
}
...
@@ -772,7 +773,7 @@ static void _handle_get_request(connection_t *con,
...
@@ -772,7 +773,7 @@ static void _handle_get_request(connection_t *con,
struct
stat
statbuf
;
struct
stat
statbuf
;
source_t
*
source
;
source_t
*
source
;
int
fileserve
;
int
fileserve
;
char
*
host
;
char
*
host
=
NULL
;
int
port
;
int
port
;
int
i
;
int
i
;
char
*
serverhost
=
NULL
;
char
*
serverhost
=
NULL
;
...
@@ -785,7 +786,8 @@ static void _handle_get_request(connection_t *con,
...
@@ -785,7 +786,8 @@ static void _handle_get_request(connection_t *con,
config
=
config_get_config
();
config
=
config_get_config
();
fileserve
=
config
->
fileserve
;
fileserve
=
config
->
fileserve
;
host
=
config
->
hostname
;
if
(
config
->
hostname
)
host
=
strdup
(
config
->
hostname
);
port
=
config
->
port
;
port
=
config
->
port
;
for
(
i
=
0
;
i
<
global
.
server_sockets
;
i
++
)
{
for
(
i
=
0
;
i
<
global
.
server_sockets
;
i
++
)
{
if
(
global
.
serversock
[
i
]
==
con
->
serversock
)
{
if
(
global
.
serversock
[
i
]
==
con
->
serversock
)
{
...
@@ -827,6 +829,7 @@ static void _handle_get_request(connection_t *con,
...
@@ -827,6 +829,7 @@ static void _handle_get_request(connection_t *con,
(
strncmp
(
uri
,
"/admin/"
,
7
)
==
0
))
{
(
strncmp
(
uri
,
"/admin/"
,
7
)
==
0
))
{
admin_handle_request
(
client
,
uri
);
admin_handle_request
(
client
,
uri
);
if
(
uri
!=
passed_uri
)
free
(
uri
);
if
(
uri
!=
passed_uri
)
free
(
uri
);
free
(
host
);
return
;
return
;
}
}
...
@@ -851,6 +854,7 @@ static void _handle_get_request(connection_t *con,
...
@@ -851,6 +854,7 @@ static void _handle_get_request(connection_t *con,
}
}
free
(
fullpath
);
free
(
fullpath
);
if
(
uri
!=
passed_uri
)
free
(
uri
);
if
(
uri
!=
passed_uri
)
free
(
uri
);
free
(
host
);
return
;
return
;
}
}
else
if
(
fileserve
&&
stat
(
fullpath
,
&
statbuf
)
==
0
&&
else
if
(
fileserve
&&
stat
(
fullpath
,
&
statbuf
)
==
0
&&
...
@@ -863,6 +867,7 @@ static void _handle_get_request(connection_t *con,
...
@@ -863,6 +867,7 @@ static void _handle_get_request(connection_t *con,
fserve_client_create
(
client
,
fullpath
);
fserve_client_create
(
client
,
fullpath
);
free
(
fullpath
);
free
(
fullpath
);
if
(
uri
!=
passed_uri
)
free
(
uri
);
if
(
uri
!=
passed_uri
)
free
(
uri
);
free
(
host
);
return
;
return
;
}
}
free
(
fullpath
);
free
(
fullpath
);
...
@@ -884,8 +889,10 @@ static void _handle_get_request(connection_t *con,
...
@@ -884,8 +889,10 @@ static void _handle_get_request(connection_t *con,
client_destroy
(
client
);
client_destroy
(
client
);
free
(
sourceuri
);
free
(
sourceuri
);
if
(
uri
!=
passed_uri
)
free
(
uri
);
if
(
uri
!=
passed_uri
)
free
(
uri
);
free
(
host
);
return
;
return
;
}
}
free
(
host
);
global_lock
();
global_lock
();
if
(
global
.
clients
>=
client_limit
)
{
if
(
global
.
clients
>=
client_limit
)
{
...
...
src/format_mp3.c
View file @
19cb11cc
...
@@ -66,7 +66,7 @@ static void write_mp3_to_file (struct source_tag *source, refbuf_t *refbuf);
...
@@ -66,7 +66,7 @@ static void write_mp3_to_file (struct source_tag *source, refbuf_t *refbuf);
typedef
struct
{
typedef
struct
{
int
use_metadata
;
unsigned
int
interval
;
int
metadata_offset
;
int
metadata_offset
;
unsigned
int
since_meta_block
;
unsigned
int
since_meta_block
;
int
in_metadata
;
int
in_metadata
;
...
@@ -105,14 +105,17 @@ int format_mp3_get_plugin (source_t *source)
...
@@ -105,14 +105,17 @@ int format_mp3_get_plugin (source_t *source)
memcpy
(
meta
->
data
,
"
\0\0
"
,
2
);
memcpy
(
meta
->
data
,
"
\0\0
"
,
2
);
meta
->
len
=
1
;
meta
->
len
=
1
;
state
->
metadata
=
meta
;
state
->
metadata
=
meta
;
state
->
interval
=
ICY_METADATA_INTERVAL
;
state
->
interval
=
-
1
;
metadata
=
httpp_getvar
(
source
->
parser
,
"icy-metaint"
);
metadata
=
httpp_getvar
(
source
->
parser
,
"icy-metaint"
);
if
(
metadata
)
if
(
metadata
)
{
{
state
->
inline_metadata_interval
=
atoi
(
metadata
);
state
->
inline_metadata_interval
=
atoi
(
metadata
);
state
->
offset
=
0
;
if
(
state
->
inline_metadata_interval
>
0
)
plugin
->
get_buffer
=
mp3_get_filter_meta
;
{
state
->
offset
=
0
;
plugin
->
get_buffer
=
mp3_get_filter_meta
;
}
}
}
source
->
format
=
plugin
;
source
->
format
=
plugin
;
thread_mutex_create
(
&
state
->
url_lock
);
thread_mutex_create
(
&
state
->
url_lock
);
...
@@ -260,15 +263,15 @@ static int send_mp3_metadata (client_t *client, refbuf_t *associated)
...
@@ -260,15 +263,15 @@ static int send_mp3_metadata (client_t *client, refbuf_t *associated)
/* If there is a change in metadata then send it else
/* If there is a change in metadata then send it else
* send a single zero value byte in its place
* send a single zero value byte in its place
*/
*/
if
(
associated
=
=
client_mp3
->
associated
)
if
(
associated
&&
associated
!
=
client_mp3
->
associated
)
{
{
metadata
=
"
\0
"
;
metadata
=
associated
->
data
+
client_mp3
->
metadata_offset
;
meta_len
=
1
;
meta_len
=
associated
->
len
-
client_mp3
->
metadata_offset
;
}
}
else
else
{
{
metadata
=
associated
->
data
+
client_mp3
->
metadata_offset
;
metadata
=
"
\0
"
;
meta_len
=
associated
->
len
-
client_mp3
->
metadata_offset
;
meta_len
=
1
;
}
}
ret
=
client_send_bytes
(
client
,
metadata
,
meta_len
);
ret
=
client_send_bytes
(
client
,
metadata
,
meta_len
);
...
@@ -297,7 +300,6 @@ static int format_mp3_write_buf_to_client (format_plugin_t *self, client_t *clie
...
@@ -297,7 +300,6 @@ static int format_mp3_write_buf_to_client (format_plugin_t *self, client_t *clie
{
{
int
ret
,
written
=
0
;
int
ret
,
written
=
0
;
mp3_client_data
*
client_mp3
=
client
->
format_data
;
mp3_client_data
*
client_mp3
=
client
->
format_data
;
mp3_state
*
source_mp3
=
self
->
_state
;
refbuf_t
*
refbuf
=
client
->
refbuf
;
refbuf_t
*
refbuf
=
client
->
refbuf
;
char
*
buf
;
char
*
buf
;
unsigned
int
len
;
unsigned
int
len
;
...
@@ -328,9 +330,9 @@ static int format_mp3_write_buf_to_client (format_plugin_t *self, client_t *clie
...
@@ -328,9 +330,9 @@ static int format_mp3_write_buf_to_client (format_plugin_t *self, client_t *clie
written
+=
ret
;
written
+=
ret
;
}
}
/* see if we need to send the current metadata to the client */
/* see if we need to send the current metadata to the client */
if
(
client_mp3
->
use_metadata
)
if
(
client_mp3
->
interval
)
{
{
unsigned
int
remaining
=
source
_mp3
->
interval
-
unsigned
int
remaining
=
client
_mp3
->
interval
-
client_mp3
->
since_meta_block
;
client_mp3
->
since_meta_block
;
/* sending the metadata block */
/* sending the metadata block */
...
@@ -572,17 +574,24 @@ static refbuf_t *mp3_get_filter_meta (source_t *source)
...
@@ -572,17 +574,24 @@ static refbuf_t *mp3_get_filter_meta (source_t *source)
static
int
format_mp3_create_client_data
(
source_t
*
source
,
client_t
*
client
)
static
int
format_mp3_create_client_data
(
source_t
*
source
,
client_t
*
client
)
{
{
mp3_client_data
*
data
=
calloc
(
1
,
sizeof
(
mp3_client_data
));
mp3_client_data
*
client_mp3
=
calloc
(
1
,
sizeof
(
mp3_client_data
));
char
*
metadata
;
char
*
metadata
;
mp3_state
*
source_mp3
=
source
->
format
->
_state
;
if
(
data
==
NULL
)
if
(
client_mp3
==
NULL
)
return
-
1
;
return
-
1
;
client
->
format_data
=
data
;
client
->
format_data
=
client_mp3
;
client
->
free_client_data
=
free_mp3_client_data
;
client
->
free_client_data
=
free_mp3_client_data
;
metadata
=
httpp_getvar
(
client
->
parser
,
"icy-metadata"
);
metadata
=
httpp_getvar
(
client
->
parser
,
"icy-metadata"
);
if
(
metadata
)
if
(
metadata
&&
atoi
(
metadata
))
data
->
use_metadata
=
atoi
(
metadata
)
>
0
?
1
:
0
;
{
if
(
source_mp3
->
interval
>
0
)
client_mp3
->
interval
=
source_mp3
->
interval
;
else
client_mp3
->
interval
=
ICY_METADATA_INTERVAL
;
}
return
0
;
return
0
;
}
}
...
@@ -632,10 +641,10 @@ static void format_mp3_send_headers(format_plugin_t *self,
...
@@ -632,10 +641,10 @@ static void format_mp3_send_headers(format_plugin_t *self,
if
(
bytes
>
0
)
if
(
bytes
>
0
)
client
->
con
->
sent_bytes
+=
bytes
;
client
->
con
->
sent_bytes
+=
bytes
;
if
(
mp3data
->
use_metadata
)
if
(
mp3data
->
interval
)
{
{
int
bytes
=
sock_write
(
client
->
con
->
sock
,
"icy-metaint:%d
\r\n
"
,
int
bytes
=
sock_write
(
client
->
con
->
sock
,
"icy-metaint:%d
\r\n
"
,
ICY_METADATA_INTERVAL
);
mp3data
->
interval
);
if
(
bytes
>
0
)
if
(
bytes
>
0
)
client
->
con
->
sent_bytes
+=
bytes
;
client
->
con
->
sent_bytes
+=
bytes
;
}
}
...
...
src/format_mp3.h
View file @
19cb11cc
...
@@ -22,7 +22,7 @@ typedef struct {
...
@@ -22,7 +22,7 @@ typedef struct {
/* These are for inline metadata */
/* These are for inline metadata */
int
inline_metadata_interval
;
int
inline_metadata_interval
;
int
offset
;
int
offset
;
unsigned
interval
;
int
interval
;
char
*
url_artist
;
char
*
url_artist
;
char
*
url_title
;
char
*
url_title
;
int
update_metadata
;
int
update_metadata
;
...
...
src/format_ogg.c
View file @
19cb11cc
...
@@ -139,6 +139,8 @@ static void free_ogg_codecs (ogg_state_t *ogg_info)
...
@@ -139,6 +139,8 @@ static void free_ogg_codecs (ogg_state_t *ogg_info)
while
(
codec
)
while
(
codec
)
{
{
ogg_codec_t
*
next
=
codec
->
next
;
ogg_codec_t
*
next
=
codec
->
next
;
if
(
codec
->
possible_start
)
refbuf_release
(
codec
->
possible_start
);
codec
->
codec_free
(
ogg_info
,
codec
);
codec
->
codec_free
(
ogg_info
,
codec
);
codec
=
next
;
codec
=
next
;
}
}
...
...
src/format_vorbis.c
View file @
19cb11cc
...
@@ -200,7 +200,11 @@ static refbuf_t *get_buffer_finished (ogg_state_t *ogg_info, ogg_codec_t *codec)
...
@@ -200,7 +200,11 @@ static refbuf_t *get_buffer_finished (ogg_state_t *ogg_info, ogg_codec_t *codec)
format_ogg_free_headers
(
ogg_info
);
format_ogg_free_headers
(
ogg_info
);
source_vorbis
->
get_buffer_page
=
NULL
;
source_vorbis
->
get_buffer_page
=
NULL
;
source_vorbis
->
process_packet
=
process_vorbis_headers
;
if
(
source_vorbis
->
prev_packet
)
source_vorbis
->
process_packet
=
process_vorbis_headers
;
else
source_vorbis
->
process_packet
=
NULL
;
if
(
source_vorbis
->
initial_audio_packet
==
0
)
if
(
source_vorbis
->
initial_audio_packet
==
0
)
source_vorbis
->
prev_window
=
0
;
source_vorbis
->
prev_window
=
0
;
...
@@ -264,6 +268,8 @@ static int process_vorbis_audio (ogg_state_t *ogg_info, ogg_codec_t *codec)
...
@@ -264,6 +268,8 @@ static int process_vorbis_audio (ogg_state_t *ogg_info, ogg_codec_t *codec)
if
(
packet
.
e_o_s
)
if
(
packet
.
e_o_s
)
{
{
initiate_flush
(
source_vorbis
);
initiate_flush
(
source_vorbis
);
free_ogg_packet
(
source_vorbis
->
prev_packet
);
source_vorbis
->
prev_packet
=
NULL
;
return
1
;
return
1
;
}
}
...
@@ -275,6 +281,7 @@ static int process_vorbis_audio (ogg_state_t *ogg_info, ogg_codec_t *codec)
...
@@ -275,6 +281,7 @@ static int process_vorbis_audio (ogg_state_t *ogg_info, ogg_codec_t *codec)
{
{
initiate_flush
(
source_vorbis
);
initiate_flush
(
source_vorbis
);
source_vorbis
->
stream_notify
=
0
;
source_vorbis
->
stream_notify
=
0
;
return
1
;
}
}
return
-
1
;
return
-
1
;
}
}
...
@@ -329,7 +336,6 @@ static int process_vorbis_headers (ogg_state_t *ogg_info, ogg_codec_t *codec)
...
@@ -329,7 +336,6 @@ static int process_vorbis_headers (ogg_state_t *ogg_info, ogg_codec_t *codec)
*/
*/
ogg_codec_t
*
initial_vorbis_page
(
format_plugin_t
*
plugin
,
ogg_page
*
page
)
ogg_codec_t
*
initial_vorbis_page
(
format_plugin_t
*
plugin
,
ogg_page
*
page
)
{
{
// ogg_state_t *ogg_info = plugin->_state;
ogg_codec_t
*
codec
=
calloc
(
1
,
sizeof
(
ogg_codec_t
));
ogg_codec_t
*
codec
=
calloc
(
1
,
sizeof
(
ogg_codec_t
));
ogg_packet
packet
;
ogg_packet
packet
;
...
...
src/slave.c
View file @
19cb11cc
...
@@ -60,7 +60,7 @@
...
@@ -60,7 +60,7 @@
#define CATMODULE "slave"
#define CATMODULE "slave"
static
void
*
_slave_thread
(
void
*
arg
);
static
void
*
_slave_thread
(
void
*
arg
);
thread_type
*
_slave_thread_id
;
static
thread_type
*
_slave_thread_id
;
static
int
slave_running
=
0
;
static
int
slave_running
=
0
;
volatile
static
unsigned
int
max_interval
=
0
;
volatile
static
unsigned
int
max_interval
=
0
;
volatile
static
int
rescan_relays
=
0
;
volatile
static
int
rescan_relays
=
0
;
...
@@ -305,29 +305,29 @@ update_relay_set (relay_server **current, relay_server *updated)
...
@@ -305,29 +305,29 @@ update_relay_set (relay_server **current, relay_server *updated)
while
(
relay
)
while
(
relay
)
{
{
existing_relay
=
*
current
;
existing_relay
=
*
current
;
existing_p
=
current
;
existing_p
=
current
;
while
(
existing_relay
)
while
(
existing_relay
)
{
{
/* break out if keeping relay */
/* break out if keeping relay */
if
(
strcmp
(
relay
->
localmount
,
existing_relay
->
localmount
)
==
0
)
if
(
strcmp
(
relay
->
localmount
,
existing_relay
->
localmount
)
==
0
)
break
;
break
;
existing_p
=
&
existing_relay
->
next
;
existing_p
=
&
existing_relay
->
next
;
existing_relay
=
existing_relay
->
next
;
existing_relay
=
existing_relay
->
next
;
}
}
if
(
existing_relay
==
NULL
)
if
(
existing_relay
==
NULL
)
{
{
/* new one, copy and insert */
/* new one, copy and insert */
existing_relay
=
relay_copy
(
relay
);
existing_relay
=
relay_copy
(
relay
);
}
}
else
else
{
{
*
existing_p
=
existing_relay
->
next
;
*
existing_p
=
existing_relay
->
next
;
}
}
existing_relay
->
next
=
new_list
;
existing_relay
->
next
=
new_list
;
new_list
=
existing_relay
;
new_list
=
existing_relay
;
relay
=
relay
->
next
;
relay
=
relay
->
next
;
}
}
return
new_list
;
return
new_list
;
}
}
...
@@ -480,11 +480,13 @@ static void *_slave_thread(void *arg)
...
@@ -480,11 +480,13 @@ static void *_slave_thread(void *arg)
ice_config_t
*
config
;
ice_config_t
*
config
;
unsigned
int
interval
=
0
;
unsigned
int
interval
=
0
;
while
(
slave_running
)
while
(
1
)
{
{
relay_server
*
cleanup_relays
;
relay_server
*
cleanup_relays
;
thread_sleep
(
1000000
);
thread_sleep
(
1000000
);
if
(
slave_running
==
0
)
break
;
if
(
rescan_relays
==
0
&&
max_interval
>
++
interval
)
if
(
rescan_relays
==
0
&&
max_interval
>
++
interval
)
continue
;
continue
;
...
...
src/source.c
View file @
19cb11cc
...
@@ -228,10 +228,21 @@ void source_clear_source (source_t *source)
...
@@ -228,10 +228,21 @@ void source_clear_source (source_t *source)
avl_tree_unlock
(
source
->
pending_tree
);
avl_tree_unlock
(
source
->
pending_tree
);
if
(
source
->
format
&&
source
->
format
->
free_plugin
)
if
(
source
->
format
&&
source
->
format
->
free_plugin
)
{
source
->
format
->
free_plugin
(
source
->
format
);
source
->
format
->
free_plugin
(
source
->
format
);
}
source
->
format
=
NULL
;
source
->
format
=
NULL
;
/* Lets clear out the source queue too */
while
(
source
->
stream_data
)
{
refbuf_t
*
p
=
source
->
stream_data
;
source
->
stream_data
=
p
->
next
;
/* can be referenced by burst handler as well */
while
(
p
->
_count
>
1
)
refbuf_release
(
p
);
refbuf_release
(
p
);
}
source
->
stream_data_tail
=
NULL
;
if
(
source
->
yp_public
)
if
(
source
->
yp_public
)
yp_remove
(
source
->
mount
);
yp_remove
(
source
->
mount
);
...
@@ -255,18 +266,6 @@ void source_clear_source (source_t *source)
...
@@ -255,18 +266,6 @@ void source_clear_source (source_t *source)
free
(
source
->
dumpfilename
);
free
(
source
->
dumpfilename
);
source
->
dumpfilename
=
NULL
;
source
->
dumpfilename
=
NULL
;
/* Lets clear out the source queue too */
while
(
source
->
stream_data
)
{
refbuf_t
*
p
=
source
->
stream_data
;
source
->
stream_data
=
p
->
next
;
/* can be referenced by burst handler as well */
while
(
p
->
_count
>
1
)
refbuf_release
(
p
);
refbuf_release
(
p
);
}
source
->
stream_data_tail
=
NULL
;
}
}
...
...
src/stats.c
View file @
19cb11cc
...
@@ -419,6 +419,8 @@ static void modify_node_event (stats_node_t *node, stats_event_t *event)
...
@@ -419,6 +419,8 @@ static void modify_node_event (stats_node_t *node, stats_event_t *event)
}
}
str
=
malloc
(
16
);
str
=
malloc
(
16
);
snprintf
(
str
,
16
,
"%d"
,
value
);
snprintf
(
str
,
16
,
"%d"
,
value
);
if
(
event
->
value
==
NULL
)
event
->
value
=
strdup
(
str
);
}
}
else
else
str
=
(
char
*
)
strdup
(
event
->
value
);
str
=
(
char
*
)
strdup
(
event
->
value
);
...
...
src/xslt.c
View file @
19cb11cc
...
@@ -68,6 +68,8 @@ void xslt_initialize()
...
@@ -68,6 +68,8 @@ void xslt_initialize()
{
{
memset
(
cache
,
0
,
sizeof
(
stylesheet_cache_t
)
*
CACHESIZE
);
memset
(
cache
,
0
,
sizeof
(
stylesheet_cache_t
)
*
CACHESIZE
);
thread_mutex_create
(
&
xsltlock
);
thread_mutex_create
(
&
xsltlock
);
xmlSubstituteEntitiesDefault
(
1
);
xmlLoadExtDtdDefaultValue
=
1
;
}
}
void
xslt_shutdown
()
{
void
xslt_shutdown
()
{
...
@@ -80,6 +82,7 @@ void xslt_shutdown() {
...
@@ -80,6 +82,7 @@ void xslt_shutdown() {
xsltFreeStylesheet
(
cache
[
i
].
stylesheet
);
xsltFreeStylesheet
(
cache
[
i
].
stylesheet
);
}
}
thread_mutex_destroy
(
&
xsltlock
);
xsltCleanupGlobals
();
xsltCleanupGlobals
();
}
}
...
@@ -157,9 +160,6 @@ void xslt_transform(xmlDocPtr doc, const char *xslfilename, client_t *client)
...
@@ -157,9 +160,6 @@ void xslt_transform(xmlDocPtr doc, const char *xslfilename, client_t *client)
params
[
0
]
=
NULL
;
params
[
0
]
=
NULL
;
xmlSubstituteEntitiesDefault
(
1
);
xmlLoadExtDtdDefaultValue
=
1
;
thread_mutex_lock
(
&
xsltlock
);
thread_mutex_lock
(
&
xsltlock
);
cur
=
xslt_get_stylesheet
(
xslfilename
);
cur
=
xslt_get_stylesheet
(
xslfilename
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment