X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/3b9aa3e57bc89946447e61db239fbd6965a0a137..163ed8a5e867848f98cbdd1f040381aefe2cbf40:/clients/playrtp.c diff --git a/clients/playrtp.c b/clients/playrtp.c index f6e89d2..b5da73f 100644 --- a/clients/playrtp.c +++ b/clients/playrtp.c @@ -500,7 +500,7 @@ struct packet *playrtp_next_packet(void) { } /* display usage message and terminate */ -static void help(void) { +static void attribute((noreturn)) help(void) { xprintf("Usage:\n" " disorder-playrtp [OPTIONS] [[ADDRESS] PORT]\n" "Options:\n" @@ -754,6 +754,7 @@ int main(int argc, char **argv) { } } if(config_read(0, NULL)) disorder_fatal(0, "cannot read configuration"); + /* Choose a sensible default audio backend */ if(!backend) { backend = uaudio_default(uaudio_apis, UAUDIO_API_CLIENT); if(!backend) @@ -795,6 +796,12 @@ int main(int argc, char **argv) { struct sockaddr *addr; socklen_t addr_len; if(!strcmp(sl.s[0], "-")) { + /* We'll need a connection to request the incoming stream, so open one if + * we don't have one already */ + if(!c) { + if(!(c = disorder_new(1))) exit(EXIT_FAILURE); + if(disorder_connect(c)) exit(EXIT_FAILURE); + } /* Pick address family to match known-working connectivity to the server */ int family = disorder_client_af(c); /* Get a list of interfaces */ @@ -803,6 +810,7 @@ int main(int argc, char **argv) { disorder_fatal(errno, "error calling getifaddrs"); /* Try to pick a good one */ for(; ifa; ifa = ifa->ifa_next) { + if(!ifa->ifa_addr) continue; if(bestifa == NULL || compare_interfaces(ifa, bestifa, family) > 0) bestifa = ifa;