projects
/
paraslash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix two bugs concerning blocking fds
[paraslash.git]
/
server.c
diff --git
a/server.c
b/server.c
index 2391e07c360d93f68e85a76c99bc783e1f2d4bc0..9688c6ccf2cb4ac29723b0a8dd6f40627c16d934 100644
(file)
--- a/
server.c
+++ b/
server.c
@@
-56,7
+56,7
@@
struct misc_meta_data *mmd;
* It also contains the options for all audio file selectors and all supported
* senders.
*/
* It also contains the options for all audio file selectors and all supported
* senders.
*/
-struct
gengetopt
_args_info conf;
+struct
server
_args_info conf;
char *user_list = NULL;
extern void dccp_send_init(struct sender *);
extern void http_send_init(struct sender *);
char *user_list = NULL;
extern void dccp_send_init(struct sender *);
extern void http_send_init(struct sender *);
@@
-234,7
+234,7
@@
static void parse_config(int override)
}
if (!ret) {
int tmp = conf.daemon_given;
}
if (!ret) {
int tmp = conf.daemon_given;
- cmdline_parser_configfile(cf, &conf, override, 0, 0);
+
server_
cmdline_parser_configfile(cf, &conf, override, 0, 0);
conf.daemon_given = tmp;
}
/* logfile */
conf.daemon_given = tmp;
}
/* logfile */
@@
-302,11
+302,18
@@
random:
static unsigned init_network(void)
{
static unsigned init_network(void)
{
- int
sockfd
= init_tcp_socket(conf.port_arg);
+ int
fd, ret
= init_tcp_socket(conf.port_arg);
- if (sockfd < 0)
- exit(EXIT_FAILURE);
- return sockfd;
+ if (ret < 0)
+ goto err;
+ fd = ret;
+ ret = mark_fd_nonblock(fd);
+ if (ret < 0)
+ goto err;
+ return fd;
+err:
+ PARA_EMERG_LOG("%s\n", PARA_STRERROR(-ret));
+ exit(EXIT_FAILURE);
}
static void init_random_seed(void)
}
static void init_random_seed(void)
@@
-339,7
+346,7
@@
static unsigned do_inits(int argc, char **argv)
init_random_seed();
/* parse command line options */
init_random_seed();
/* parse command line options */
- cmdline_parser(argc, argv, &conf);
+
server_
cmdline_parser(argc, argv, &conf);
para_drop_privileges(conf.user_arg, conf.group_arg);
/* parse config file, open log and set defaults */
parse_config(0);
para_drop_privileges(conf.user_arg, conf.group_arg);
/* parse config file, open log and set defaults */
parse_config(0);
@@
-359,10
+366,6
@@
static unsigned do_inits(int argc, char **argv)
/* init network socket */
PARA_NOTICE_LOG("%s", "initializing tcp command socket\n");
sockfd = init_network();
/* init network socket */
PARA_NOTICE_LOG("%s", "initializing tcp command socket\n");
sockfd = init_network();
- if (conf.autoplay_given) {
- mmd->afs_status_flags |= AFS_PLAYING;
- mmd->new_afs_status_flags |= AFS_PLAYING;
- }
PARA_NOTICE_LOG("%s", "init complete\n");
return sockfd;
}
PARA_NOTICE_LOG("%s", "init complete\n");
return sockfd;
}