udpsrc and EHOSTUNREACH

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

udpsrc and EHOSTUNREACH

Robert Krakora
Hi All,

I have found that the same code that was added to udpsrc for WSAECONNRESET for WIN32 is also needed for EHOSTUNREACH for Linux.  I have spend the last two days tracking this down and would not have found it for some time had the WSAECONNRESET fix for WIN32 not been present in the code.

#ifdef G_OS_WIN32
      /* WSAECONNRESET for a UDP socket means that a packet sent with udpsink
       * generated a "port unreachable" ICMP response. We ignore that and try
       * again. */
      if (WSAGetLastError () == WSAECONNRESET) {
        g_free (pktdata);
        pktdata = NULL;
        goto retry;
      }
      if (WSAGetLastError () != WSAEINTR)
        goto receive_error;
#else
      /* EHOSTUNREACH for a UDP socket means that a packet sent with udpsink
       * generated a "port unreachable" ICMP response. We ignore that and try
       * again. */
       
      if (errno == EHOSTUNREACH) {
        g_free (pktdata);
        pktdata = NULL;
        goto retry;
      }
      if (errno != EAGAIN && errno != EINTR)
        goto receive_error;
#endif

Best Regards,

Rob Krakora


_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: udpsrc and EHOSTUNREACH

Robert Krakora
This is in gstudpsrc.c...anyone?  This fixes the issue, should I open a bug report?


From: Robert Krakora <[hidden email]>
To: [hidden email]
Cc: [hidden email]
Sent: Fri, November 2, 2012 12:38:50 PM
Subject: udpsrc and EHOSTUNREACH

Hi All,

I have found that the same code that was added to udpsrc for WSAECONNRESET for WIN32 is also needed for EHOSTUNREACH for Linux.  I have spend the last two days tracking this down and would not have found it for some time had the WSAECONNRESET fix for WIN32 not been present in the code.

#ifdef G_OS_WIN32
      /* WSAECONNRESET for a UDP socket means that a packet sent with udpsink
       * generated a "port unreachable" ICMP response. We ignore that and try
       * again. */
      if (WSAGetLastError () == WSAECONNRESET) {
        g_free (pktdata);
        pktdata = NULL;
        goto retry;
      }
      if (WSAGetLastError () != WSAEINTR)
        goto receive_error;
#else
      /* EHOSTUNREACH for a UDP socket means that a packet sent with udpsink
       * generated a "port unreachable" ICMP response. We ignore that and try
       * again. */
       
      if (errno == EHOSTUNREACH) {
        g_free (pktdata);
        pktdata = NULL;
        goto retry;
      }
      if (errno != EAGAIN && errno != EINTR)
        goto receive_error;
#endif

Best Regards,

Rob Krakora


_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: udpsrc and EHOSTUNREACH

Tim-Philipp Müller-2
On Mon, 2012-11-05 at 12:22 -0800, Robert Krakora wrote:

> This is in gstudpsrc.c...anyone?  This fixes the issue, should I open
> a bug report?

In general, patches should be submitted via bugzilla, yes. But you might
want to check if it's still an issue with the 1.x udpsrc, since it has
been rewritten on top of GLib's networking stack.

Cheers
 -Tim

>
> ______________________________________________________________________
> From: Robert Krakora <[hidden email]>
> To: [hidden email]
> Cc: [hidden email]
> Sent: Fri, November 2, 2012 12:38:50 PM
> Subject: udpsrc and EHOSTUNREACH
>
> Hi All,
>
> I have found that the same code that was added to udpsrc for
> WSAECONNRESET for WIN32 is also needed for EHOSTUNREACH for Linux.  I
> have spend the last two days tracking this down and would not have
> found it for some time had the WSAECONNRESET fix for WIN32 not been
> present in the code.
>
> #ifdef G_OS_WIN32
>       /* WSAECONNRESET for a UDP socket means that a packet sent with
> udpsink
>        * generated a "port unreachable" ICMP response. We ignore that
> and try
>        * again. */
>       if (WSAGetLastError () == WSAECONNRESET) {
>         g_free (pktdata);
>         pktdata = NULL;
>         goto retry;
>       }
>       if (WSAGetLastError () != WSAEINTR)
>         goto receive_error;
> #else
>       /* EHOSTUNREACH for a UDP socket means that a packet sent with
> udpsink
>        * generated a "port unreachable" ICMP response. We ignore that
> and try
>        * again. */
>        
>       if (errno == EHOSTUNREACH) {
>         g_free (pktdata);
>         pktdata = NULL;
>         goto retry;
>       }
>       if (errno != EAGAIN && errno != EINTR)
>         goto receive_error;
> #endif
>
> Best Regards,
>
> Rob Krakora
>
>
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel