Re: gnutv should not ignore SIGPIPE
On 11-11-25 08:36 AM, Brian J. Murrell wrote: > > Yes, that is the other way to skin that cat I suppose. I couldn't figure out what the right thing for writer thread to do to terminate the application so I used SIGPIPE instead. Here's the patch: --- linuxtv-dvb-apps-1.1.1+rev1273~/util/gnutv/gnutv_data.c 2011-11-28 09:10:33.010407011 -0500 +++ linuxtv-dvb-apps-1.1.1+rev1273/util/gnutv/gnutv_data.c 2011-11-28 09:10:26.446258282 -0500 @@ -265,7 +265,10 @@ while(written < size) { int tmp = write(outfd, buf + written, size - written); if (tmp == -1) { - if (errno != EINTR) { + if (errno == EPIPE) { + fprintf(stderr, "processing EPIPE\n"); + return 0; + } else if (errno != EINTR) { fprintf(stderr, "Write error: %m\n"); break; } --- linuxtv-dvb-apps-1.1.1+rev1273~/util/gnutv/gnutv.c 2011-11-28 10:13:13.294445131 -0500 +++ linuxtv-dvb-apps-1.1.1+rev1273/util/gnutv/gnutv.c.new 2011-11-28 10:13:10.510492321 -0500 @@ -262,7 +262,7 @@ // setup any signals signal(SIGINT, signal_handler); - signal(SIGPIPE, SIG_IGN); + signal(SIGPIPE, signal_handler); // start the CA stuff gnutv_ca_params.adapter_id = adapter_id; signature.asc Description: OpenPGP digital signature
Re: gnutv should not ignore SIGPIPE
On 11-11-25 08:34 AM, Rémi Denis-Courmont wrote: > > Anyway, the problem is not so mucgh ignoring SIGPIPE as ignoring EPIPE write > errors. Yes, that is the other way to skin that cat I suppose. What's the best/proper way to go about getting this fixed? Cheers, b. signature.asc Description: OpenPGP digital signature
Re: gnutv should not ignore SIGPIPE
Le vendredi 25 novembre 2011 15:05:44 Brian J. Murrell, vous avez écrit : > Is there a good reason I am not seeing why gnutv should be ignoring > SIGPIPE? In general, ignoring SIGPIPE is the easiest way to protect against denial of service when a peer connection socket is hung up remotely. MSG_NOSIGNAL is a more modern alternative. Anyway, the problem is not so mucgh ignoring SIGPIPE as ignoring EPIPE write errors. -- Rémi Denis-Courmont http://www.remlab.net/ http://fi.linkedin.com/in/remidenis -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
gnutv should not ignore SIGPIPE
Currently, (at least in rev. 1355) gnutv is ignoring SIGPIPE: signal(SIGPIPE, SIG_IGN); This means though that if it is used as such: gnutv -out stdout -channels /home/mythtv/channels.conf.found 91-472 | mplayer - It will not terminate as it should when/if it's consumer (mplayer in the above example) is killed. Is there a good reason I am not seeing why gnutv should be ignoring SIGPIPE? Cheers, b. signature.asc Description: OpenPGP digital signature