From: <wt...@ke...> - 2007-07-27 11:16:46
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Fri Jul 27 2007 11:16:37 UTC Log message: * gst-libs/gst/rtsp/gstrtspextension.c: (gst_rtsp_extension_send): Fire the signal on the object, not the interface. Modified files: . : ChangeLog gst-libs/gst/rtsp: gstrtspextension.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.3431&r2=1.3432 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspextension.c.diff?r1=1.1&r2=1.2 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.3431 retrieving revision 1.3432 diff -u -d -r1.3431 -r1.3432 --- ChangeLog 27 Jul 2007 09:17:19 -0000 1.3431 +++ ChangeLog 27 Jul 2007 11:16:23 -0000 1.3432 @@ -1,3 +1,8 @@ +2007-07-27 Wim Taymans <wim...@gm...> + + * gst-libs/gst/rtsp/gstrtspextension.c: (gst_rtsp_extension_send): + Fire the signal on the object, not the interface. 2007-07-27 Jan Schmidt <th...@ma...> * gst-libs/gst/rtsp/.cvsignore: Index: gstrtspextension.c RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspextension.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- gstrtspextension.c 26 Jul 2007 19:57:15 -0000 1.1 +++ gstrtspextension.c 27 Jul 2007 11:16:23 -0000 1.2 @@ -199,13 +199,10 @@ gst_rtsp_extension_send (GstRTSPExtension * ext, GstRTSPMessage * req, GstRTSPMessage * resp) { - GstRTSPExtensionInterface *iface; GstRTSPResult res = GST_RTSP_OK; - iface = GST_RTSP_EXTENSION_GET_IFACE (ext); - - g_signal_emit (G_OBJECT (iface), gst_rtsp_extension_signals[SIGNAL_SEND], 0, - req, resp); + g_signal_emit (ext, gst_rtsp_extension_signals[SIGNAL_SEND], 0, + req, resp, &res); return res; } |
From: <wt...@ke...> - 2007-08-03 15:44:59
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Fri Aug 03 2007 15:44:16 UTC Log message: * gst-libs/gst/rtsp/gstrtsptransport.c: (gst_rtsp_transport_parse): Add rdt manager for rdt transport. Fix parsing of RDT transport. Modified files: . : ChangeLog gst-libs/gst/rtsp: gstrtsptransport.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.3436&r2=1.3437 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtsptransport.c.diff?r1=1.2&r2=1.3 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.3436 retrieving revision 1.3437 diff -u -d -r1.3436 -r1.3437 --- ChangeLog 3 Aug 2007 14:43:15 -0000 1.3436 +++ ChangeLog 3 Aug 2007 15:44:01 -0000 1.3437 @@ -1,3 +1,9 @@ +2007-08-03 Wim Taymans <wim...@gm...> + + * gst-libs/gst/rtsp/gstrtsptransport.c: (gst_rtsp_transport_parse): + Add rdt manager for rdt transport. + Fix parsing of RDT transport. 2007-08-03 Jan Schmidt <th...@ma...> * configure.ac: Index: gstrtsptransport.c RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtsptransport.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- gstrtsptransport.c 25 Jul 2007 11:22:30 -0000 1.2 +++ gstrtsptransport.c 3 Aug 2007 15:44:01 -0000 1.3 @@ -87,8 +87,8 @@ static const GstRTSPTransMap transports[] = { {"rtp", GST_RTSP_TRANS_RTP, "application/x-rtp", {"gstrtpbin", "rtpdec"}}, - {"x-real-rdt", GST_RTSP_TRANS_RDT, "application/x-rdt", {NULL, NULL}}, - {"x-pn-tng", GST_RTSP_TRANS_RDT, "application/x-rdt", {NULL, NULL}}, + {"x-real-rdt", GST_RTSP_TRANS_RDT, "application/x-rdt", {"rdtmanager", NULL}}, + {"x-pn-tng", GST_RTSP_TRANS_RDT, "application/x-rdt", {"rdtmanager", NULL}}, {NULL, GST_RTSP_TRANS_UNKNOWN, NULL, {NULL, NULL}} }; @@ -358,7 +358,7 @@ { gchar **split, *down, **transp = NULL; guint transport_params = 0; - gint i; + gint i, count; g_return_val_if_fail (transport != NULL, GST_RTSP_EINVAL); g_return_val_if_fail (str != NULL, GST_RTSP_EINVAL); @@ -385,14 +385,21 @@ break; transport->trans = transports[i].mode; - for (i = 0; profiles[i].name; i++) - if (strcmp (transp[1], profiles[i].name) == 0) - break; - transport->profile = profiles[i].profile; + if (transport->trans != GST_RTSP_TRANS_RDT) { + for (i = 0; profiles[i].name; i++) + if (strcmp (transp[1], profiles[i].name) == 0) + break; + transport->profile = profiles[i].profile; + count = 2; + } else { + /* RDT has transport/lower_transport */ + transport->profile = GST_RTSP_PROFILE_AVP; + count = 1; + } - if (transp[2] != NULL) { + if (transp[count] != NULL) { for (i = 0; ltrans[i].name; i++) - if (strcmp (transp[2], ltrans[i].name) == 0) + if (strcmp (transp[count], ltrans[i].name) == 0) break; transport->lower_transport = ltrans[i].ltrans; } else { |
From: <wt...@ke...> - 2007-08-07 15:14:13
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Tue Aug 07 2007 15:14:01 UTC Log message: Patch by: Damien Lespiau <damien dot lespiau at gmail dot com> * configure.ac: * gst-libs/gst/rtsp/Makefile.am: * gst-libs/gst/rtsp/gstrtspconnection.c: (gst_rtsp_connection_connect): Fix compilation on windows. Fixes #464320. Modified files: . : ChangeLog configure.ac gst-libs/gst/rtsp: Makefile.am gstrtspconnection.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.3441&r2=1.3442 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/configure.ac.diff?r1=1.692&r2=1.693 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/Makefile.am.diff?r1=1.2&r2=1.3 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c.diff?r1=1.2&r2=1.3 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.3441 retrieving revision 1.3442 diff -u -d -r1.3441 -r1.3442 --- ChangeLog 7 Aug 2007 14:14:53 -0000 1.3441 +++ ChangeLog 7 Aug 2007 15:13:46 -0000 1.3442 @@ -1,5 +1,15 @@ 2007-08-07 Wim Taymans <wim...@gm...> + Patch by: Damien Lespiau <damien dot lespiau at gmail dot com> + + * configure.ac: + * gst-libs/gst/rtsp/Makefile.am: + * gst-libs/gst/rtsp/gstrtspconnection.c: + (gst_rtsp_connection_connect): + Fix compilation on windows. Fixes #464320. +2007-08-07 Wim Taymans <wim...@gm...> Patch by: Josep Torre Valles <jo...@fl...> * gst/playback/gstplaybasebin.c: (gst_play_base_bin_class_init), Index: configure.ac RCS file: /cvs/gstreamer/gst-plugins-base/configure.ac,v retrieving revision 1.692 retrieving revision 1.693 diff -u -d -r1.692 -r1.693 --- configure.ac 3 Aug 2007 14:43:15 -0000 1.692 +++ configure.ac 7 Aug 2007 15:13:46 -0000 1.693 @@ -205,6 +205,13 @@ HAVE_SYS_SOCKET_H="yes", HAVE_SYS_SOCKET_H="no") AM_CONDITIONAL(HAVE_SYS_SOCKET_H, test "x$HAVE_SYS_SOCKET_H" = "xyes") +dnl used in gst-libs/gst/rtsp +AC_CHECK_HEADERS([winsock2.h], HAVE_WINSOCK2_H=yes) +if test "x$HAVE_WINSOCK2_H" = "xyes"; then + WIN32_LIBS="-lws2_32" + AC_SUBST(WIN32_LIBS) +fi dnl used in gst-libs/gst/pbutils and associated unit test AC_CHECK_HEADERS([process.h sys/types.h sys/wait.h sys/stat.h]) Index: Makefile.am RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/Makefile.am,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Makefile.am 26 Jul 2007 19:57:15 -0000 1.2 +++ Makefile.am 7 Aug 2007 15:13:46 -0000 1.3 @@ -35,7 +35,7 @@ #rtspextreal.c libgstrtsp_@GST_MAJORMINOR@_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) -libgstrtsp_@GST_MAJORMINOR@_la_LIBADD = $(GST_LIBS) +libgstrtsp_@GST_MAJORMINOR@_la_LIBADD = $(GST_LIBS) $(WIN32_LIBS) libgstrtsp_@GST_MAJORMINOR@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS) BUILT_SOURCES = $(built_headers) $(built_sources) Index: gstrtspconnection.c RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c,v --- gstrtspconnection.c 24 Jul 2007 19:19:33 -0000 1.2 +++ gstrtspconnection.c 7 Aug 2007 15:13:46 -0000 1.3 @@ -212,9 +212,7 @@ gint fd; struct sockaddr_in sa_in; struct hostent *hostinfo; - char **addrs; const gchar *ip; - gchar ipbuf[INET_ADDRSTRLEN]; struct in_addr addr; gint ret; guint16 port; @@ -226,6 +224,10 @@ #ifdef G_OS_WIN32 unsigned long flags; + struct in_addr *addrp; +#else + char **addrs; + gchar ipbuf[INET_ADDRSTRLEN]; #endif /* G_OS_WIN32 */ g_return_val_if_fail (conn != NULL, GST_RTSP_EINVAL); @@ -244,10 +246,15 @@ if (hostinfo->h_addrtype != AF_INET) goto not_ip; /* host not an IP host */ - +#ifdef G_OS_WIN32 + addrp = (struct in_addr *) hostinfo->h_addr_list[0]; + /* this is not threadsafe */ + ip = inet_ntoa (*addrp); addrs = hostinfo->h_addr_list; ip = inet_ntop (AF_INET, (struct in_addr *) addrs[0], ipbuf, sizeof (ipbuf)); +#endif /* G_OS_WIN32 */ } /* get the port from the url */ |
From: <wt...@ke...> - 2007-09-11 19:08:08
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Tue Sep 11 2007 19:08:11 UTC Log message: Patch by: Tommi Myöhänen <ext-tommi dot myohanen at nokia dot com> * gst-libs/gst/rtsp/gstrtspconnection.c: (gst_rtsp_connection_read_internal), (gst_rtsp_connection_read), (read_body), (gst_rtsp_connection_receive): Make sure we can not cancel in the middle of receiving a message. Fixes #475731. Modified files: . : ChangeLog gst-libs/gst/rtsp: gstrtspconnection.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.3505&r2=1.3506 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c.diff?r1=1.4&r2=1.5 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.3505 retrieving revision 1.3506 diff -u -d -r1.3505 -r1.3506 --- ChangeLog 11 Sep 2007 11:29:11 -0000 1.3505 +++ ChangeLog 11 Sep 2007 19:07:55 -0000 1.3506 @@ -1,3 +1,13 @@ +2007-09-11 Wim Taymans <wim...@gm...> + + Patch by: Tommi Myöhänen <ext-tommi dot myohanen at nokia dot com> + * gst-libs/gst/rtsp/gstrtspconnection.c: + (gst_rtsp_connection_read_internal), (gst_rtsp_connection_read), + (read_body), (gst_rtsp_connection_receive): + Make sure we can not cancel in the middle of receiving a message. + Fixes #475731. 2007-09-11 Tim-Philipp Müller <tim at centricular dot net> Patch by: Josep Torra Valles <jo...@fl...> Index: gstrtspconnection.c RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- gstrtspconnection.c 17 Aug 2007 13:42:49 -0000 1.4 +++ gstrtspconnection.c 11 Sep 2007 19:07:57 -0000 1.5 @@ -787,23 +787,25 @@ } /** - * gst_rtsp_connection_read: + * gst_rtsp_connection_read_internal: * @conn: a #GstRTSPConnection * @data: the data to read * @size: the size of @data * @timeout: a timeout value or #NULL + * @allow_interrupt: can the pending read be interrupted * * Attempt to read @size bytes into @data from the connected @conn, blocking up to * the specified @timeout. @timeout can be #NULL, in which case this function * might block forever. * - * This function can be canceled with gst_rtsp_connection_flush(). + * This function can be canceled with gst_rtsp_connection_flush() only if the + * @allow_interrupt is set. * Returns: #GST_RTSP_OK on success. */ -GstRTSPResult -gst_rtsp_connection_read (GstRTSPConnection * conn, guint8 * data, guint size, - GTimeVal * timeout) +static GstRTSPResult +gst_rtsp_connection_read_internal (GstRTSPConnection * conn, guint8 * data, + guint size, GTimeVal * timeout, gboolean allow_interrupt) { fd_set readfds; guint toread; @@ -842,7 +844,8 @@ /* set inside the loop so that when we did not read enough and we have to * continue, we still have the cancel socket bit set */ - FD_SET (READ_SOCKET (conn), &readfds); + if (allow_interrupt) + FD_SET (READ_SOCKET (conn), &readfds); do { retval = select (FD_SETSIZE, &readfds, NULL, NULL, ptv_timeout); @@ -898,6 +901,29 @@ } +/** + * gst_rtsp_connection_read: + * @conn: a #GstRTSPConnection + * @data: the data to read + * @size: the size of @data + * @timeout: a timeout value or #NULL + * + * Attempt to read @size bytes into @data from the connected @conn, blocking up to + * the specified @timeout. @timeout can be #NULL, in which case this function + * might block forever. + * This function can be canceled with gst_rtsp_connection_flush(). + * Returns: #GST_RTSP_OK on success. + */ +GstRTSPResult +gst_rtsp_connection_read (GstRTSPConnection * conn, guint8 * data, guint size, + GTimeVal * timeout) +{ + return gst_rtsp_connection_read_internal (conn, data, size, timeout, TRUE); +} static GstRTSPResult read_body (GstRTSPConnection * conn, glong content_length, GstRTSPMessage * msg, GTimeVal * timeout) @@ -914,8 +940,8 @@ body = g_malloc (content_length + 1); body[content_length] = '\0'; - GST_RTSP_CHECK (gst_rtsp_connection_read (conn, body, content_length, - timeout), read_error); + GST_RTSP_CHECK (gst_rtsp_connection_read_internal (conn, body, content_length, + timeout, FALSE), read_error); content_length += 1; @@ -969,8 +995,9 @@ guint8 c; /* read first character, this identifies data messages */ - GST_RTSP_CHECK (gst_rtsp_connection_read (conn, &c, 1, timeout), - read_error); + /* This is the only read() that we allow to be interrupted */ + GST_RTSP_CHECK (gst_rtsp_connection_read_internal (conn, &c, 1, timeout, + TRUE), read_error); /* check for data packet, first character is $ */ if (c == '$') { @@ -979,15 +1006,15 @@ /* data packets are $<1 byte channel><2 bytes length,BE><data bytes> */ /* read channel, which is the next char */ - GST_RTSP_CHECK (gst_rtsp_connection_read (conn, &c, 1, timeout), - read_error); + GST_RTSP_CHECK (gst_rtsp_connection_read_internal (conn, &c, 1, timeout, + FALSE), read_error); /* now we create a data message */ gst_rtsp_message_init_data (message, c); /* next two bytes are the length of the data */ - GST_RTSP_CHECK (gst_rtsp_connection_read (conn, (guint8 *) & size, 2, - timeout), read_error); + GST_RTSP_CHECK (gst_rtsp_connection_read_internal (conn, + (guint8 *) & size, 2, timeout, FALSE), read_error); size = GUINT16_FROM_BE (size); |
From: <wt...@ke...> - 2007-11-16 11:22:23
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Fri Nov 16 2007 11:22:23 UTC Log message: Patch by: Tommi Myöhänen <ext-tommi dot myohanen at nokia dot com> * gst-libs/gst/rtsp/gstrtspmessage.c: (gst_rtsp_message_unset): Fix leaking headers. Fixes #496761. Modified files: . : ChangeLog gst-libs/gst/rtsp: gstrtspmessage.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.3605&r2=1.3606 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspmessage.c.diff?r1=1.3&r2=1.4 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.3605 retrieving revision 1.3606 diff -u -d -r1.3605 -r1.3606 --- ChangeLog 16 Nov 2007 11:16:56 -0000 1.3605 +++ ChangeLog 16 Nov 2007 11:22:08 -0000 1.3606 @@ -2,6 +2,13 @@ Patch by: Tommi Myöhänen <ext-tommi dot myohanen at nokia dot com> + * gst-libs/gst/rtsp/gstrtspmessage.c: (gst_rtsp_message_unset): + Fix leaking headers. Fixes #496761. + +2007-11-16 Wim Taymans <wim...@gm...> + Patch by: Tommi Myöhänen <ext-tommi dot myohanen at nokia dot com> * sys/ximage/ximagesink.c: (gst_ximagesink_xcontext_get), (gst_ximagesink_change_state): * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xcontext_get): Index: gstrtspmessage.c RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspmessage.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- gstrtspmessage.c 17 Sep 2007 17:24:54 -0000 1.3 +++ gstrtspmessage.c 16 Nov 2007 11:22:09 -0000 1.4 @@ -452,9 +452,16 @@ break; } - if (msg->hdr_fields != NULL) - g_array_free (msg->hdr_fields, TRUE); + if (msg->hdr_fields != NULL) { + gint i; + for (i = 0; i < msg->hdr_fields->len; i++) { + RTSPKeyValue *keyval = &g_array_index (msg->hdr_fields, RTSPKeyValue, i); + g_free (keyval->value); + } + g_array_free (msg->hdr_fields, TRUE); + } g_free (msg->body); memset (msg, 0, sizeof *msg); |
From: <wt...@ke...> - 2007-12-13 15:54:10
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Thu Dec 13 2007 15:54:14 UTC Log message: Patch by: Peter Kjellerstedt <pkj at axis com> * gst-libs/gst/rtsp/gstrtspconnection.c: (gst_rtsp_connection_free): Close control sockets. Fixes #503440. Modified files: . : ChangeLog gst-libs/gst/rtsp: gstrtspconnection.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.3636&r2=1.3637 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c.diff?r1=1.6&r2=1.7 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.3636 retrieving revision 1.3637 diff -u -d -r1.3636 -r1.3637 --- ChangeLog 13 Dec 2007 12:31:37 -0000 1.3636 +++ ChangeLog 13 Dec 2007 15:53:58 -0000 1.3637 @@ -1,5 +1,13 @@ 2007-12-13 Wim Taymans <wim...@co...> + Patch by: Peter Kjellerstedt <pkj at axis com> + + * gst-libs/gst/rtsp/gstrtspconnection.c: + (gst_rtsp_connection_free): + Close control sockets. Fixes #503440. +2007-12-13 Wim Taymans <wim...@co...> * gst/playback/gstdecodebin2.c: (analyze_new_pad), (connect_pad): Expose the right pad in the right place with the right element. Index: gstrtspconnection.c RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- gstrtspconnection.c 1 Nov 2007 13:28:59 -0000 1.6 +++ gstrtspconnection.c 13 Dec 2007 15:54:00 -0000 1.7 @@ -1163,6 +1163,10 @@ g_return_val_if_fail (conn != NULL, GST_RTSP_EINVAL); + if (WRITE_SOCKET (conn) >= 0) + CLOSE_SOCKET (WRITE_SOCKET (conn)); + if (READ_SOCKET (conn) >= 0) + CLOSE_SOCKET (READ_SOCKET (conn)); #ifdef G_OS_WIN32 WSACleanup (); #endif |
From: <wt...@ke...> - 2007-12-30 19:21:40
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Sun Dec 30 2007 19:21:30 UTC Log message: * gst-libs/gst/rtsp/gstrtspdefs.c: (rtsp_init_status): * gst-libs/gst/rtsp/gstrtspdefs.h: Add Location header so that we can start implementing redirects. See #506025. Modified files: . : ChangeLog gst-libs/gst/rtsp: gstrtspdefs.c gstrtspdefs.h Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.3664&r2=1.3665 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspdefs.c.diff?r1=1.2&r2=1.3 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspdefs.h.diff?r1=1.4&r2=1.5 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.3664 retrieving revision 1.3665 diff -u -d -r1.3664 -r1.3665 --- ChangeLog 29 Dec 2007 20:55:38 -0000 1.3664 +++ ChangeLog 30 Dec 2007 19:21:15 -0000 1.3665 @@ -1,3 +1,10 @@ +2007-12-30 Wim Taymans <wim...@co...> + + * gst-libs/gst/rtsp/gstrtspdefs.c: (rtsp_init_status): + * gst-libs/gst/rtsp/gstrtspdefs.h: + Add Location header so that we can start implementing redirects. + See #506025. 2007-12-29 Thijs Vermeir <thi...@gm...> * gst/subparse/gstssaparse.c: Index: gstrtspdefs.c RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspdefs.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- gstrtspdefs.c 24 Jul 2007 19:19:33 -0000 1.2 +++ gstrtspdefs.c 30 Dec 2007 19:21:16 -0000 1.3 @@ -156,6 +156,8 @@ "Language", /* Language */ "PlayerStarttime", /* PlayerStarttime */ + "Location", /* Location */ NULL }; @@ -173,7 +175,7 @@ DEF_STATUS (GST_RTSP_STS_LOW_ON_STORAGE, "Low on Storage Space"); DEF_STATUS (GST_RTSP_STS_MULTIPLE_CHOICES, "Multiple Choices"); DEF_STATUS (GST_RTSP_STS_MOVED_PERMANENTLY, "Moved Permanently"); - DEF_STATUS (GST_RTSP_STS_MOVE_TEMPORARILY, "Moved Temporarily"); + DEF_STATUS (GST_RTSP_STS_MOVE_TEMPORARILY, "Move Temporarily"); DEF_STATUS (GST_RTSP_STS_SEE_OTHER, "See Other"); DEF_STATUS (GST_RTSP_STS_NOT_MODIFIED, "Not Modified"); DEF_STATUS (GST_RTSP_STS_USE_PROXY, "Use Proxy"); Index: gstrtspdefs.h RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspdefs.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- gstrtspdefs.h 17 Aug 2007 13:42:49 -0000 1.4 +++ gstrtspdefs.h 30 Dec 2007 19:21:16 -0000 1.5 @@ -277,6 +277,10 @@ GST_RTSP_HDR_MAX_ASM_WIDTH, /* SupportsMaximumASMBandwidth */ GST_RTSP_HDR_LANGUAGE, /* Language */ GST_RTSP_HDR_PLAYER_START_TIME, /* PlayerStarttime */ + /* Since 0.10.16 */ + GST_RTSP_HDR_LOCATION /* Location */ } GstRTSPHeaderField; typedef enum { |
From: <wt...@ke...> - 2008-02-07 12:17:58
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Thu Feb 07 2008 12:18:03 UTC Log message: * gst-libs/gst/rtsp/gstrtspmessage.c: (gst_rtsp_message_unset): Fix compiler warning. Modified files: . : ChangeLog gst-libs/gst/rtsp: gstrtspmessage.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.3722&r2=1.3723 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspmessage.c.diff?r1=1.5&r2=1.6 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.3722 retrieving revision 1.3723 diff -u -d -r1.3722 -r1.3723 --- ChangeLog 7 Feb 2008 11:00:40 -0000 1.3722 +++ ChangeLog 7 Feb 2008 12:17:47 -0000 1.3723 @@ -1,5 +1,10 @@ 2008-02-07 Wim Taymans <wim...@co...> + * gst-libs/gst/rtsp/gstrtspmessage.c: (gst_rtsp_message_unset): + Fix compiler warning. + +2008-02-07 Wim Taymans <wim...@co...> Patch by: Peter Kjellerstedt <pkj at axis com> * gst-libs/gst/sdp/gstsdpmessage.c: (is_multicast_address): Index: gstrtspmessage.c RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspmessage.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- gstrtspmessage.c 16 Dec 2007 23:52:58 -0000 1.5 +++ gstrtspmessage.c 7 Feb 2008 12:17:49 -0000 1.6 @@ -452,7 +452,7 @@ } if (msg->hdr_fields != NULL) { - gint i; + guint i; for (i = 0; i < msg->hdr_fields->len; i++) { RTSPKeyValue *keyval = &g_array_index (msg->hdr_fields, RTSPKeyValue, i); |
From: <wt...@ke...> - 2008-02-28 09:51:03
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Thu Feb 28 2008 09:51:06 UTC Log message: * gst-libs/gst/rtsp/gstrtspconnection.c: (gst_rtsp_connection_create), (gst_rtsp_connection_connect), (gst_rtsp_connection_write), (gst_rtsp_connection_read_internal), (gst_rtsp_connection_receive), (gst_rtsp_connection_close), (gst_rtsp_connection_free), (gst_rtsp_connection_poll), (gst_rtsp_connection_flush): * gst-libs/gst/rtsp/gstrtspconnection.h: Use GstPoll for the rtsp connection. Modified files: . : ChangeLog gst-libs/gst/rtsp: gstrtspconnection.c gstrtspconnection.h Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.3777&r2=1.3778 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c.diff?r1=1.12&r2=1.13 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.h.diff?r1=1.3&r2=1.4 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.3777 retrieving revision 1.3778 diff -u -d -r1.3777 -r1.3778 --- ChangeLog 27 Feb 2008 12:19:29 -0000 1.3777 +++ ChangeLog 28 Feb 2008 09:50:50 -0000 1.3778 @@ -1,3 +1,14 @@ +2008-02-28 Wim Taymans <wim...@co...> + + * gst-libs/gst/rtsp/gstrtspconnection.c: + (gst_rtsp_connection_create), (gst_rtsp_connection_connect), + (gst_rtsp_connection_write), (gst_rtsp_connection_read_internal), + (gst_rtsp_connection_receive), (gst_rtsp_connection_close), + (gst_rtsp_connection_free), (gst_rtsp_connection_poll), + (gst_rtsp_connection_flush): + * gst-libs/gst/rtsp/gstrtspconnection.h: + Use GstPoll for the rtsp connection. 2008-02-27 Wim Taymans <wim...@co...> * tests/examples/seek/seek.c: (vis_toggle_cb), (filter_features), Index: gstrtspconnection.c RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- gstrtspconnection.c 2 Feb 2008 07:13:15 -0000 1.12 +++ gstrtspconnection.c 28 Feb 2008 09:50:52 -0000 1.13 @@ -90,25 +90,6 @@ #include "gstrtspconnection.h" #include "gstrtspbase64.h" -/* the select call is also performed on the control sockets, that way - * we can send special commands to unlock or restart the select call */ -#define CONTROL_RESTART 'R' /* restart the select call */ -#define CONTROL_STOP 'S' /* stop the select call */ -#define CONTROL_SOCKETS(conn) conn->control_sock -#define WRITE_SOCKET(conn) conn->control_sock[1] -#define READ_SOCKET(conn) conn->control_sock[0] - -#define SEND_COMMAND(conn, command) \ -G_STMT_START { \ - unsigned char c; c = command; \ - write (WRITE_SOCKET(conn), &c, 1); \ -} G_STMT_END -#define READ_COMMAND(conn, command, res) \ - res = read(READ_SOCKET(conn), &command, 1); \ #ifdef G_OS_WIN32 #define FIONREAD_TYPE gulong #define IOCTL_SOCKET ioctlsocket @@ -149,36 +130,17 @@ GstRTSPResult gst_rtsp_connection_create (GstRTSPUrl * url, GstRTSPConnection ** conn) { - gint ret; GstRTSPConnection *newconn; -#ifdef G_OS_WIN32 - unsigned long flags; -#endif /* G_OS_WIN32 */ g_return_val_if_fail (conn != NULL, GST_RTSP_EINVAL); newconn = g_new0 (GstRTSPConnection, 1); - /* This should work on UNIX too. PF_UNIX sockets replaced with pipe */ - /* pipe( CONTROL_SOCKETS(newconn) ) */ - if ((ret = _pipe (CONTROL_SOCKETS (newconn), 4096, _O_BINARY)) < 0) - goto no_socket_pair; - ioctlsocket (READ_SOCKET (newconn), FIONBIO, &flags); - ioctlsocket (WRITE_SOCKET (newconn), FIONBIO, &flags); -#else - if ((ret = - socketpair (PF_UNIX, SOCK_STREAM, 0, CONTROL_SOCKETS (newconn))) < 0) - fcntl (READ_SOCKET (newconn), F_SETFL, O_NONBLOCK); - fcntl (WRITE_SOCKET (newconn), F_SETFL, O_NONBLOCK); -#endif + if ((newconn->fdset = gst_poll_new (GST_POLL_MODE_AUTO, TRUE)) == NULL) + goto no_fdset; newconn->url = url; - newconn->fd = -1; + newconn->fd.fd = -1; newconn->timer = g_timer_new (); newconn->auth_method = GST_RTSP_AUTH_NONE; @@ -190,7 +152,7 @@ return GST_RTSP_OK; /* ERRORS */ -no_socket_pair: +no_fdset: { g_free (newconn); return GST_RTSP_ESYS; @@ -207,6 +169,8 @@ * forever. If @timeout contains a valid timeout, this function will return * #GST_RTSP_ETIMEOUT after the timeout expired. * + * This function can be cancelled with gst_rtsp_connection_flush(). + * * Returns: #GST_RTSP_OK when a connection could be made. */ @@ -220,10 +184,8 @@ gint ret; guint16 port; GstRTSPUrl *url; - fd_set writefds; - fd_set readfds; - struct timeval tv, *tvp; - gint max_fd, retval; + GstClockTime to; + gint retval; unsigned long flags; @@ -235,7 +197,7 @@ g_return_val_if_fail (conn->url != NULL, GST_RTSP_EINVAL); - g_return_val_if_fail (conn->fd < 0, GST_RTSP_EINVAL); + g_return_val_if_fail (conn->fd.fd < 0, GST_RTSP_EINVAL); url = conn->url; @@ -279,6 +241,10 @@ ioctlsocket (fd, FIONBIO, &flags); #endif /* G_OS_WIN32 */ + /* add the socket to our fdset */ + conn->fd.fd = fd; + gst_poll_add_fd (conn->fdset, &conn->fd); /* we are going to connect ASYNC now */ ret = connect (fd, (struct sockaddr *) &sa_in, sizeof (sa_in)); if (ret == 0) @@ -288,24 +254,13 @@ /* wait for connect to complete up to the specified timeout or until we got * interrupted. */ - FD_ZERO (&writefds); - FD_SET (fd, &writefds); - FD_ZERO (&readfds); - FD_SET (READ_SOCKET (conn), &readfds); - if (timeout) { - tv.tv_sec = timeout->tv_sec; - tv.tv_usec = timeout->tv_usec; - tvp = &tv; - } else { - tvp = NULL; - } + gst_poll_fd_ctl_write (conn->fdset, &conn->fd, TRUE); - max_fd = MAX (fd, READ_SOCKET (conn)); + to = timeout ? GST_TIMEVAL_TO_TIME (*timeout) : GST_CLOCK_TIME_NONE; do { - retval = select (max_fd + 1, &readfds, &writefds, NULL, tvp); - } while ((retval == -1 && errno == EINTR)); + retval = gst_poll_wait (conn->fdset, to); + } while (retval == -1 && errno == EINTR); if (retval == 0) goto timeout; @@ -313,14 +268,17 @@ goto sys_error; done: - conn->fd = fd; conn->ip = g_strdup (ip); sys_error: - if (fd != -1) + if (conn->fd.fd >= 0) { + gst_poll_remove_fd (conn->fdset, &conn->fd); + conn->fd.fd = -1; + } + if (fd >= 0) CLOSE_SOCKET (fd); } @@ -334,6 +292,12 @@ timeout: + CLOSE_SOCKET (fd); return GST_RTSP_ETIMEOUT; } @@ -399,7 +363,7 @@ * the specified @timeout. @timeout can be #NULL, in which case this function * might block forever. * - * This function can be canceled with gst_rtsp_connection_flush(). * Returns: #GST_RTSP_OK on success. @@ -408,52 +372,39 @@ guint size, GTimeVal * timeout) guint towrite; - int max_fd; gint retval; g_return_val_if_fail (data != NULL || size == 0, GST_RTSP_EINVAL); - FD_SET (conn->fd, &writefds); - max_fd = MAX (conn->fd, READ_SOCKET (conn)); + gst_poll_set_controllable (conn->fdset, TRUE); + gst_poll_fd_ctl_read (conn->fdset, &conn->fd, FALSE); towrite = size; while (towrite > 0) { gint written; - /* set bit inside the loop for when we loop to read the rest of the data */ - FD_SET (READ_SOCKET (conn), &readfds); do { - retval = select (max_fd + 1, &readfds, &writefds, NULL, tvp); - } while ((retval == -1 && errno == EINTR)); + retval = gst_poll_wait (conn->fdset, to); + } while (retval == -1 && errno == EINTR); if (retval == 0) goto timeout; - if (retval == -1) - goto select_error; - if (FD_ISSET (READ_SOCKET (conn), &readfds)) - goto stopped; + if (retval == -1) { + if (errno == EBUSY) + goto stopped; + else + goto select_error; /* now we can write */ - written = write (conn->fd, data, towrite); + written = write (conn->fd.fd, data, towrite); if (written < 0) { if (errno != EAGAIN && errno != EINTR) goto write_error; @@ -493,7 +444,7 @@ @@ -810,7 +761,7 @@ - * This function can be canceled with gst_rtsp_connection_flush() only if the + * This function can be cancelled with gst_rtsp_connection_flush() only if * @allow_interrupt is set. @@ -819,10 +770,9 @@ gst_rtsp_connection_read_internal (GstRTSPConnection * conn, guint8 * data, guint size, GTimeVal * timeout, gboolean allow_interrupt) guint toread; - struct timeval tv_timeout, *ptv_timeout; FIONREAD_TYPE avail; @@ -834,49 +784,41 @@ toread = size; /* configure timeout if any */ - if (timeout != NULL) { - tv_timeout.tv_sec = timeout->tv_sec; - tv_timeout.tv_usec = timeout->tv_usec; - ptv_timeout = &tv_timeout; - } else - ptv_timeout = NULL; /* if the call fails, just go in the select.. it should not fail. Else if * there is enough data to read, skip the select call al together.*/ - if (IOCTL_SOCKET (conn->fd, FIONREAD, &avail) < 0) + if (IOCTL_SOCKET (conn->fd.fd, FIONREAD, &avail) < 0) avail = 0; else if (avail >= toread) goto do_read; - FD_SET (conn->fd, &readfds); + gst_poll_set_controllable (conn->fdset, allow_interrupt); + gst_poll_fd_ctl_write (conn->fdset, &conn->fd, FALSE); + gst_poll_fd_ctl_read (conn->fdset, &conn->fd, TRUE); while (toread > 0) { gint bytes; - /* set inside the loop so that when we did not read enough and we have to - * continue, we still have the cancel socket bit set */ - if (allow_interrupt) - FD_SET (READ_SOCKET (conn), &readfds); - retval = select (FD_SETSIZE, &readfds, NULL, NULL, ptv_timeout); /* check for timeout */ goto select_timeout; do_read: /* if we get here there is activity on the real fd since the select * completed and the control socket was not readable. */ - bytes = read (conn->fd, data, toread); + bytes = read (conn->fd.fd, data, toread); if (bytes == 0) { goto eof; @@ -924,7 +866,7 @@ @@ -980,7 +922,7 @@ @@ -1047,7 +989,7 @@ break; /* read lines */ - GST_RTSP_CHECK (read_line (conn->fd, buffer + offset, + GST_RTSP_CHECK (read_line (conn->fd.fd, buffer + offset, sizeof (buffer) - offset), read_error); if (buffer[0] == '\0') @@ -1142,12 +1084,13 @@ g_free (conn->ip); conn->ip = NULL; - if (conn->fd != -1) { - res = CLOSE_SOCKET (conn->fd); + if (conn->fd.fd != -1) { + gst_poll_remove_fd (conn->fdset, &conn->fd); + res = CLOSE_SOCKET (conn->fd.fd); + conn->fd.fd = -1; WSACleanup (); #endif - conn->fd = -1; if (res != 0) goto sys_error; @@ -1175,14 +1118,11 @@ - if (WRITE_SOCKET (conn) >= 0) - CLOSE_SOCKET (WRITE_SOCKET (conn)); - if (READ_SOCKET (conn) >= 0) - CLOSE_SOCKET (READ_SOCKET (conn)); + res = gst_rtsp_connection_close (conn); + gst_poll_free (conn->fdset); WSACleanup (); - res = gst_rtsp_connection_close (conn); g_timer_destroy (conn->timer); g_free (conn->username); g_free (conn->passwd); @@ -1205,7 +1145,7 @@ * @timeout can be #NULL, in which case this function might block forever. @@ -1215,60 +1155,45 @@ gst_rtsp_connection_poll (GstRTSPConnection * conn, GstRTSPEvent events, GstRTSPEvent * revents, GTimeVal * timeout) - fd_set writefds, *pwritefds; g_return_val_if_fail (events != 0, GST_RTSP_EINVAL); g_return_val_if_fail (revents != NULL, GST_RTSP_EINVAL); - if (events & GST_RTSP_EV_WRITE) { - /* add fd to writer set when asked to */ - FD_ZERO (&writefds); - FD_SET (conn->fd, &writefds); - pwritefds = &writefds; - pwritefds = NULL; - /* always add cancel socket to readfds */ - if (events & GST_RTSP_EV_READ) { - /* add fd to reader set when asked to */ - FD_SET (conn->fd, &readfds); + /* add fd to writer set when asked to */ + gst_poll_fd_ctl_write (conn->fdset, &conn->fd, events & GST_RTSP_EV_WRITE); + /* add fd to reader set when asked to */ + gst_poll_fd_ctl_read (conn->fdset, &conn->fd, events & GST_RTSP_EV_READ); + /* configure timeout if any */ - retval = select (max_fd + 1, &readfds, pwritefds, NULL, tvp); goto select_timeout; - if (retval == -1) - goto select_error; - if (FD_ISSET (READ_SOCKET (conn), &readfds)) - goto stopped; + if (retval == -1) { + if (errno == EBUSY) + goto stopped; + else + goto select_error; + } *revents = 0; if (events & GST_RTSP_EV_READ) { - if (FD_ISSET (conn->fd, &readfds)) + if (gst_poll_fd_can_read (conn->fdset, &conn->fd)) *revents |= GST_RTSP_EV_READ; if (events & GST_RTSP_EV_WRITE) { - if (FD_ISSET (conn->fd, &writefds)) + if (gst_poll_fd_can_write (conn->fdset, &conn->fd)) *revents |= GST_RTSP_EV_WRITE; @@ -1355,20 +1280,8 @@ - if (flush) { - SEND_COMMAND (conn, CONTROL_STOP); - while (TRUE) { - gchar command; - int res; + gst_poll_set_flushing (conn->fdset, flush); - READ_COMMAND (conn, command, res); - if (res <= 0) { - /* no more commands */ - break; - } - } Index: gstrtspconnection.h RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- gstrtspconnection.h 17 Aug 2007 13:42:49 -0000 1.3 +++ gstrtspconnection.h 28 Feb 2008 09:50:52 -0000 1.4 @@ -65,9 +65,9 @@ /* connection state */ - gint fd; - gint control_sock[2]; - gchar *ip; + GstPollFD fd; + GstPoll *fdset; + gchar *ip; /* Session state */ gint cseq; /* sequence number */ |
From: <wt...@ke...> - 2008-03-18 11:10:20
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Tue Mar 18 2008 11:10:26 UTC Log message: Patch by: Ole André Vadla Ravnås <ole...@ta...> * gst-libs/gst/rtsp/gstrtspconnection.c: (gst_rtsp_connection_connect), (gst_rtsp_connection_write), (read_line), (gst_rtsp_connection_read_internal): Generic Windows fixes that makes libgstrtsp work on Windows when coupled with the new GstPoll API. See #520808. Modified files: . : ChangeLog gst-libs/gst/rtsp: gstrtspconnection.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.3812&r2=1.3813 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c.diff?r1=1.15&r2=1.16 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.3812 retrieving revision 1.3813 diff -u -d -r1.3812 -r1.3813 --- ChangeLog 17 Mar 2008 22:06:55 -0000 1.3812 +++ ChangeLog 18 Mar 2008 11:10:10 -0000 1.3813 @@ -1,3 +1,13 @@ +2008-03-18 Wim Taymans <wim...@co...> + + Patch by: Ole André Vadla Ravnås <ole...@ta...> + * gst-libs/gst/rtsp/gstrtspconnection.c: + (gst_rtsp_connection_connect), (gst_rtsp_connection_write), + (read_line), (gst_rtsp_connection_read_internal): + Generic Windows fixes that makes libgstrtsp work on Windows when + coupled with the new GstPoll API. See #520808. 2008-03-17 Sebastian Dröge <sl...@ci...> Patch by: Milosz Derezynski <internalerror at gmail dot com> Index: gstrtspconnection.c RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- gstrtspconnection.c 7 Mar 2008 15:48:50 -0000 1.15 +++ gstrtspconnection.c 18 Mar 2008 11:10:12 -0000 1.16 @@ -96,11 +96,23 @@ #ifdef G_OS_WIN32 #define FIONREAD_TYPE gulong #define IOCTL_SOCKET ioctlsocket -#define CLOSE_SOCKET(sock) closesocket(sock); +#define READ_SOCKET(fd, buf, len) recv (fd, buf, len, 0) +#define WRITE_SOCKET(fd, buf, len) send (fd, buf, len, 0) +#define CLOSE_SOCKET(sock) closesocket (sock) +#define ERRNO_IS_NOT_EAGAIN (WSAGetLastError () != WSAEWOULDBLOCK) +#define ERRNO_IS_NOT_EINTR (WSAGetLastError () != WSAEINTR) +/* According to Microsoft's connect() documentation this one returns + * WSAEWOULDBLOCK and not WSAEINPROGRESS. */ +#define ERRNO_IS_NOT_EINPROGRESS (WSAGetLastError () != WSAEWOULDBLOCK) #else #define FIONREAD_TYPE gint #define IOCTL_SOCKET ioctl -#define CLOSE_SOCKET(sock) close(sock); +#define READ_SOCKET(fd, buf, len) read (fd, buf, len) +#define WRITE_SOCKET(fd, buf, len) write (fd, buf, len) +#define CLOSE_SOCKET(sock) close (sock) +#define ERRNO_IS_NOT_EAGAIN (errno != EAGAIN) +#define ERRNO_IS_NOT_EINTR (errno != EINTR) +#define ERRNO_IS_NOT_EINPROGRESS (errno != EINPROGRESS) #endif @@ -191,7 +203,7 @@ gint retval; - unsigned long flags; + unsigned long flags = 1; struct in_addr *addrp; char **addrs; @@ -252,7 +264,7 @@ ret = connect (fd, (struct sockaddr *) &sa_in, sizeof (sa_in)); if (ret == 0) goto done; - if (errno != EINPROGRESS) + if (ERRNO_IS_NOT_EINPROGRESS) goto sys_error; /* wait for connect to complete up to the specified timeout or until we got @@ -270,6 +282,8 @@ else if (retval == -1) + gst_poll_fd_ignored (conn->fdset, &conn->fd); done: conn->ip = g_strdup (ip); @@ -407,9 +421,9 @@ } /* now we can write */ - written = write (conn->fd.fd, data, towrite); + written = WRITE_SOCKET (conn->fd.fd, data, towrite); if (written < 0) { - if (errno != EAGAIN && errno != EINTR) + if (ERRNO_IS_NOT_EAGAIN && ERRNO_IS_NOT_EINTR) goto write_error; } else { towrite -= written; @@ -580,11 +594,11 @@ idx = 0; while (TRUE) { - r = read (fd, &c, 1); + r = READ_SOCKET (fd, &c, 1); if (r == 0) { goto eof; } else if (r < 0) { goto read_error; if (c == '\n') /* end on \n */ @@ -821,12 +835,11 @@ do_read: /* if we get here there is activity on the real fd since the select * completed and the control socket was not readable. */ - bytes = read (conn->fd.fd, data, toread); - + bytes = READ_SOCKET (conn->fd.fd, data, toread); if (bytes == 0) { } else if (bytes < 0) { toread -= bytes; |
From: <wt...@ke...> - 2008-03-24 16:40:15
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Mon Mar 24 2008 16:40:22 UTC Log message: * gst-libs/gst/rtsp/gstrtspconnection.c: (gst_rtsp_connection_connect), (gst_rtsp_connection_write), (gst_rtsp_connection_read_internal), (gst_rtsp_connection_poll): Don't error when poll_wait returns EAGAIN. Modified files: . : ChangeLog gst-libs/gst/rtsp: gstrtspconnection.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.3833&r2=1.3834 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c.diff?r1=1.16&r2=1.17 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.3833 retrieving revision 1.3834 diff -u -d -r1.3833 -r1.3834 --- ChangeLog 24 Mar 2008 14:08:21 -0000 1.3833 +++ ChangeLog 24 Mar 2008 16:40:05 -0000 1.3834 @@ -1,5 +1,12 @@ 2008-03-24 Wim Taymans <wim...@co...> + * gst-libs/gst/rtsp/gstrtspconnection.c: + (gst_rtsp_connection_connect), (gst_rtsp_connection_write), + (gst_rtsp_connection_read_internal), (gst_rtsp_connection_poll): + Don't error when poll_wait returns EAGAIN. + +2008-03-24 Wim Taymans <wim...@co...> * gst/playback/gstqueue2.c: (gst_queue_is_filled): The queue is never filled when there are no buffers in the queue at all. Fixes #523993. Index: gstrtspconnection.c RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- gstrtspconnection.c 18 Mar 2008 11:10:12 -0000 1.16 +++ gstrtspconnection.c 24 Mar 2008 16:40:08 -0000 1.17 @@ -275,7 +275,7 @@ do { retval = gst_poll_wait (conn->fdset, to); - } while (retval == -1 && errno == EINTR); + } while (retval == -1 && (errno == EINTR || errno == EAGAIN)); if (retval == 0) goto timeout; @@ -408,7 +408,7 @@ do { retval = gst_poll_wait (conn->fdset, to); - } while (retval == -1 && errno == EINTR); + } while (retval == -1 && (errno == EINTR || errno == EAGAIN)); if (retval == 0) goto timeout; @@ -819,7 +819,7 @@ if (retval == -1) { if (errno == EBUSY) @@ -1191,7 +1191,7 @@ goto select_timeout; |
From: <wt...@ke...> - 2008-05-08 14:58:50
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Thu May 08 2008 14:46:42 UTC Log message: Patch by: Wouter Cloetens <zombie at e2big dot org> * gst-libs/gst/rtsp/Makefile.am: * gst-libs/gst/rtsp/gstrtspconnection.c: (gst_rtsp_connection_create), (md5_digest_to_hex_string), (auth_digest_compute_hex_urp), (auth_digest_compute_response), (add_auth_header), (gst_rtsp_connection_free), (gst_rtsp_connection_set_auth), (str_case_hash), (str_case_equal), (gst_rtsp_connection_set_auth_param), (gst_rtsp_connection_clear_auth_params): * gst-libs/gst/rtsp/gstrtspconnection.h: Add Digest authorization support for RTSP connections. See #532065. * gst-libs/gst/rtsp/md5.c: * gst-libs/gst/rtsp/md5.h: Yeap, another md5 implementation until we can depend on a glib that has support for it. Modified files: . : ChangeLog gst-libs/gst/rtsp: Makefile.am gstrtspconnection.c gstrtspconnection.h Added files: gst-libs/gst/rtsp: md5.c md5.h Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.3911&r2=1.3912 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/Makefile.am.diff?r1=1.4&r2=1.5 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c.diff?r1=1.17&r2=1.18 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.h.diff?r1=1.4&r2=1.5 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/md5.c?rev=1.1&content-type=text/vnd.viewcvs-markup http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/md5.h?rev=1.1&content-type=text/vnd.viewcvs-markup ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.3911 retrieving revision 1.3912 diff -u -d -r1.3911 -r1.3912 --- ChangeLog 8 May 2008 06:20:40 -0000 1.3911 +++ ChangeLog 8 May 2008 14:46:25 -0000 1.3912 @@ -1,3 +1,23 @@ +2008-05-08 Wim Taymans <wim...@co...> + + Patch by: Wouter Cloetens <zombie at e2big dot org> + * gst-libs/gst/rtsp/Makefile.am: + * gst-libs/gst/rtsp/gstrtspconnection.c: + (gst_rtsp_connection_create), (md5_digest_to_hex_string), + (auth_digest_compute_hex_urp), (auth_digest_compute_response), + (add_auth_header), (gst_rtsp_connection_free), + (gst_rtsp_connection_set_auth), (str_case_hash), (str_case_equal), + (gst_rtsp_connection_set_auth_param), + (gst_rtsp_connection_clear_auth_params): + * gst-libs/gst/rtsp/gstrtspconnection.h: + Add Digest authorization support for RTSP connections. See #532065. + * gst-libs/gst/rtsp/md5.c: + * gst-libs/gst/rtsp/md5.h: + Yeap, another md5 implementation until we can depend on a glib that has + support for it. 2008-05-08 Sebastian Dröge <sl...@ci...> Patch by: Sjoerd Simons <sjoerd at luon dot net> Index: Makefile.am RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/Makefile.am,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- Makefile.am 12 Jan 2008 23:08:28 -0000 1.4 +++ Makefile.am 8 May 2008 14:46:27 -0000 1.5 @@ -24,10 +24,11 @@ gstrtspmessage.c \ gstrtsprange.c \ gstrtsptransport.c \ - gstrtspurl.c + gstrtspurl.c \ + md5.c nodist_libgstrtsp_@GST_MAJORMINOR@_la_SOURCES = $(built_sources) -nodist_libgstrtspinclude_HEADERS = gstrtsp-enumtypes.h +nodist_libgstrtspinclude_HEADERS = gstrtsp-enumtypes.h md5.h noinst_HEADERS = gstrtsp.h Index: gstrtspconnection.c RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- gstrtspconnection.c 24 Mar 2008 16:40:08 -0000 1.17 +++ gstrtspconnection.c 8 May 2008 14:46:27 -0000 1.18 @@ -92,6 +92,7 @@ #include "gstrtspconnection.h" #include "gstrtspbase64.h" +#include "md5.h" #ifdef G_OS_WIN32 #define FIONREAD_TYPE gulong @@ -161,6 +162,7 @@ newconn->auth_method = GST_RTSP_AUTH_NONE; newconn->username = NULL; newconn->passwd = NULL; + newconn->auth_params = NULL; *conn = newconn; @@ -320,6 +322,65 @@ } static void +md5_digest_to_hex_string (unsigned char digest[16], char string[33]) +{ + static const char hexdigits[] = "0123456789abcdef"; + int i; + for (i = 0; i < 16; i++) { + string[i * 2] = hexdigits[(digest[i] >> 4) & 0x0f]; + string[i * 2 + 1] = hexdigits[digest[i] & 0x0f]; + } + string[32] = 0; +} +static void +auth_digest_compute_hex_urp (const gchar * username, + const gchar * realm, const gchar * password, gchar hex_urp[33]) + struct MD5Context md5_context; + unsigned char digest[16]; + MD5Init (&md5_context); + MD5Update (&md5_context, username, strlen (username)); + MD5Update (&md5_context, ":", 1); + MD5Update (&md5_context, realm, strlen (realm)); + MD5Update (&md5_context, password, strlen (password)); + MD5Final (digest, &md5_context); + md5_digest_to_hex_string (digest, hex_urp); +auth_digest_compute_response (const gchar * method, + const gchar * uri, const gchar * hex_a1, const gchar * nonce, + gchar response[33]) + char hex_a2[33]; + /* compute A2 */ + MD5Update (&md5_context, method, strlen (method)); + MD5Update (&md5_context, uri, strlen (uri)); + md5_digest_to_hex_string (digest, hex_a2); + /* compute KD */ + MD5Update (&md5_context, hex_a1, strlen (hex_a1)); + MD5Update (&md5_context, nonce, strlen (nonce)); + MD5Update (&md5_context, hex_a2, 32); + md5_digest_to_hex_string (digest, response); add_auth_header (GstRTSPConnection * conn, GstRTSPMessage * message) { switch (conn->auth_method) { @@ -338,6 +399,50 @@ g_free (auth_string); break; } + case GST_RTSP_AUTH_DIGEST:{ + gchar response[33], hex_urp[33]; + gchar *auth_string, *auth_string2; + gchar *realm; + gchar *nonce; + gchar *opaque; + const gchar *uri; + const gchar *method; + /* we need to have some params set */ + if (conn->auth_params == NULL) + break; + /* we need the realm and nonce */ + realm = (gchar *) g_hash_table_lookup (conn->auth_params, "realm"); + nonce = (gchar *) g_hash_table_lookup (conn->auth_params, "nonce"); + if (realm == NULL || nonce == NULL) + auth_digest_compute_hex_urp (conn->username, realm, conn->passwd, + hex_urp); + method = gst_rtsp_method_as_text (message->type_data.request.method); + uri = message->type_data.request.uri; + /* Assume no qop, algorithm=md5, stale=false */ + /* For algorithm MD5, a1 = urp. */ + auth_digest_compute_response (method, uri, hex_urp, nonce, response); + auth_string = g_strdup_printf ("Digest username=\"%s\", " + "realm=\"%s\", nonce=\"%s\", uri=\"%s\", response=\"%s\"", + conn->username, realm, nonce, uri, response); + opaque = (gchar *) g_hash_table_lookup (conn->auth_params, "opaque"); + if (opaque) { + auth_string2 = g_strdup_printf ("%s, opaque=\"%s\"", auth_string, + opaque); + g_free (auth_string); + auth_string = auth_string2; + } + gst_rtsp_message_add_header (message, GST_RTSP_HDR_AUTHORIZATION, + auth_string); + g_free (auth_string); + break; + } default: /* Nothing to do */ @@ -1142,6 +1247,7 @@ g_timer_destroy (conn->timer); g_free (conn->username); g_free (conn->passwd); + gst_rtsp_connection_clear_auth_params (conn); g_free (conn); return res; @@ -1317,9 +1423,9 @@ gst_rtsp_connection_set_auth (GstRTSPConnection * conn, GstRTSPAuthMethod method, const gchar * user, const gchar * pass) - /* Digest isn't implemented yet */ - if (method == GST_RTSP_AUTH_DIGEST) - return GST_RTSP_ENOTIMPL; + if (method == GST_RTSP_AUTH_DIGEST && ((user == NULL || pass == NULL) + || g_strrstr (user, ":") != NULL)) + return GST_RTSP_EINVAL; /* Make sure the username and passwd are being set for authentication */ if (method == GST_RTSP_AUTH_NONE && (user == NULL || pass == NULL)) @@ -1338,3 +1444,84 @@ return GST_RTSP_OK; +/** + * str_case_hash: + * @key: ASCII string to hash + * + * Hashes @key in a case-insensitive manner. + * Return value: the hash code. + **/ +static guint +str_case_hash (gconstpointer key) + const char *p = key; + guint h = g_ascii_toupper (*p); + if (h) + for (p += 1; *p != '\0'; p++) + h = (h << 5) - h + g_ascii_toupper (*p); + return h; + * str_case_equal: + * @v1: an ASCII string + * @v2: another ASCII string + * Compares @v1 and @v2 in a case-insensitive manner + * Return value: %TRUE if they are equal (modulo case) +static gboolean +str_case_equal (gconstpointer v1, gconstpointer v2) + const char *string1 = v1; + const char *string2 = v2; + return g_ascii_strcasecmp (string1, string2) == 0; + * gst_rtsp_connection_set_auth_param: + * @conn: a #GstRTSPConnection + * @param: authentication directive + * @value: value + * Setup @conn with authentication directives. This is not necesary for + * methods #GST_RTSP_AUTH_NONE and #GST_RTSP_AUTH_BASIC. For + * #GST_RTSP_AUTH_DIGEST, directives should be taken from the digest challenge + * in the WWW-Authenticate response header and can include realm, domain, + * nonce, opaque, stale, algorithm, qop as per RFC2617. + * + * Since: 0.10.20 + */ +void +gst_rtsp_connection_set_auth_param (GstRTSPConnection * conn, + const gchar * param, const gchar * value) + if (conn->auth_params == NULL) { + conn->auth_params = + g_hash_table_new_full (str_case_hash, str_case_equal, g_free, g_free); + g_hash_table_insert (conn->auth_params, g_strdup (param), g_strdup (value)); + * gst_rtsp_connection_clear_auth_params: + * Clear the list of authentication directives stored in @conn. +gst_rtsp_connection_clear_auth_params (GstRTSPConnection * conn) + if (conn->auth_params != NULL) { + g_hash_table_destroy (conn->auth_params); + conn->auth_params = NULL; Index: gstrtspconnection.h RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.h,v --- gstrtspconnection.h 28 Feb 2008 09:50:52 -0000 1.4 +++ gstrtspconnection.h 8 May 2008 14:46:27 -0000 1.5 @@ -79,6 +79,7 @@ GstRTSPAuthMethod auth_method; gchar *username; gchar *passwd; + GHashTable *auth_params; }; /* opening/closing a connection */ @@ -114,6 +115,11 @@ GstRTSPResult gst_rtsp_connection_set_auth (GstRTSPConnection *conn, GstRTSPAuthMethod method, const gchar *user, const gchar *pass); +void gst_rtsp_connection_set_auth_param (GstRTSPConnection *conn, + const gchar * param, + const gchar *value); +void gst_rtsp_connection_clear_auth_params (GstRTSPConnection *conn); G_END_DECLS #endif /* __GST_RTSP_CONNECTION_H__ */ --- NEW FILE: md5.c --- /* * This code implements the MD5 message-digest algorithm. * The algorithm is due to Ron Rivest. This code was * written by Colin Plumb in 1993, no copyright is claimed. * This code is in the public domain; do with it what you wish. * * Equivalent code is available from RSA Data Security, Inc. * This code has been tested against that, and is equivalent, * except that you don't need to include two pages of legalese * with every copy. * To compute the message digest of a chunk of bytes, declare an * MD5Context structure, pass it to MD5Init, call MD5Update as * needed on buffers full of bytes, and then call MD5Final, which * will fill a supplied 16-byte array with the digest. */ /* Brutally hacked by John Walker back from ANSI C to K&R (no prototypes) to maintain the tradition that Netfone will compile with Sun's original "cc". */ #include <string.h> /* for memcpy() */ #include <glib.h> #include "md5.h" #if G_BYTE_ORDER == G_BIG_ENDIAN #define HIGHFIRST #endif #ifndef HIGHFIRST #define byteReverse(buf, len) /* Nothing */ #else * Note: this code is harmless on little-endian machines. void byteReverse (buf, longs) unsigned char *buf; unsigned longs; { uint32 t; do { t = (uint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 | ((unsigned) buf[1] << 8 | buf[0]); *(uint32 *) buf = t; buf += 4; } while (--longs); } * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious * initialization constants. MD5Init (ctx) struct MD5Context *ctx; ctx->buf[0] = 0x67452301; ctx->buf[1] = 0xefcdab89; ctx->buf[2] = 0x98badcfe; ctx->buf[3] = 0x10325476; ctx->bits[0] = 0; ctx->bits[1] = 0; * Update context to reflect the concatenation of another buffer full * of bytes. MD5Update (ctx, buf, len) const char *buf; unsigned len; /* Update bitcount */ t = ctx->bits[0]; if ((ctx->bits[0] = t + ((uint32) len << 3)) < t) ctx->bits[1]++; /* Carry from low to high */ ctx->bits[1] += len >> 29; t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */ /* Handle any leading odd-sized chunks */ if (t) { unsigned char *p = (unsigned char *) ctx->in + t; t = 64 - t; if (len < t) { memcpy (p, buf, len); return; } memcpy (p, buf, t); byteReverse (ctx->in, 16); MD5Transform (ctx->buf, (uint32 *) ctx->in); buf += t; len -= t; } /* Process data in 64-byte chunks */ while (len >= 64) { memcpy (ctx->in, buf, 64); buf += 64; len -= 64; /* Handle any remaining bytes of data. */ memcpy (ctx->in, buf, len); * Final wrapup - pad to 64-byte boundary with the bit pattern * 1 0* (64-bit count of bits processed, MSB-first) MD5Final (digest, ctx) unsigned char digest[16]; unsigned count; unsigned char *p; /* Compute number of bytes mod 64 */ count = (ctx->bits[0] >> 3) & 0x3F; /* Set the first char of padding to 0x80. This is safe since there is always at least one byte free */ p = ctx->in + count; *p++ = 0x80; /* Bytes of padding needed to make 64 bytes */ count = 64 - 1 - count; /* Pad out to 56 mod 64 */ if (count < 8) { /* Two lots of padding: Pad the first block to 64 bytes */ memset (p, 0, count); /* Now fill the next block with 56 bytes */ memset (ctx->in, 0, 56); } else { /* Pad block to 56 bytes */ memset (p, 0, count - 8); byteReverse (ctx->in, 14); /* Append length in bits and transform */ ((uint32 *) ctx->in)[14] = ctx->bits[0]; ((uint32 *) ctx->in)[15] = ctx->bits[1]; MD5Transform (ctx->buf, (uint32 *) ctx->in); byteReverse ((unsigned char *) ctx->buf, 4); memcpy (digest, ctx->buf, 16); memset (ctx, 0, sizeof (ctx)); /* In case it's sensitive */ /* The four core functions - F1 is optimized somewhat */ /* #define F1(x, y, z) (x & y | ~x & z) */ #define F1(x, y, z) (z ^ (x & (y ^ z))) #define F2(x, y, z) F1(z, x, y) #define F3(x, y, z) (x ^ y ^ z) #define F4(x, y, z) (y ^ (x | ~z)) /* This is the central step in the MD5 algorithm. */ #define MD5STEP(f, w, x, y, z, data, s) \ ( w += f(x, y, z) + data, w = w<<s | w>>(32-s), w += x ) * The core of the MD5 algorithm, this alters an existing MD5 hash to * reflect the addition of 16 longwords of new data. MD5Update blocks * the data and converts bytes into longwords for this routine. MD5Transform (buf, in) uint32 buf[4]; uint32 in[16]; register uint32 a, b, c, d; a = buf[0]; b = buf[1]; c = buf[2]; d = buf[3]; MD5STEP (F1, a, b, c, d, in[0] + 0xd76aa478, 7); MD5STEP (F1, d, a, b, c, in[1] + 0xe8c7b756, 12); MD5STEP (F1, c, d, a, b, in[2] + 0x242070db, 17); MD5STEP (F1, b, c, d, a, in[3] + 0xc1bdceee, 22); MD5STEP (F1, a, b, c, d, in[4] + 0xf57c0faf, 7); MD5STEP (F1, d, a, b, c, in[5] + 0x4787c62a, 12); MD5STEP (F1, c, d, a, b, in[6] + 0xa8304613, 17); MD5STEP (F1, b, c, d, a, in[7] + 0xfd469501, 22); MD5STEP (F1, a, b, c, d, in[8] + 0x698098d8, 7); MD5STEP (F1, d, a, b, c, in[9] + 0x8b44f7af, 12); MD5STEP (F1, c, d, a, b, in[10] + 0xffff5bb1, 17); MD5STEP (F1, b, c, d, a, in[11] + 0x895cd7be, 22); MD5STEP (F1, a, b, c, d, in[12] + 0x6b901122, 7); MD5STEP (F1, d, a, b, c, in[13] + 0xfd987193, 12); MD5STEP (F1, c, d, a, b, in[14] + 0xa679438e, 17); MD5STEP (F1, b, c, d, a, in[15] + 0x49b40821, 22); MD5STEP (F2, a, b, c, d, in[1] + 0xf61e2562, 5); MD5STEP (F2, d, a, b, c, in[6] + 0xc040b340, 9); MD5STEP (F2, c, d, a, b, in[11] + 0x265e5a51, 14); MD5STEP (F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); MD5STEP (F2, a, b, c, d, in[5] + 0xd62f105d, 5); MD5STEP (F2, d, a, b, c, in[10] + 0x02441453, 9); MD5STEP (F2, c, d, a, b, in[15] + 0xd8a1e681, 14); MD5STEP (F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); MD5STEP (F2, a, b, c, d, in[9] + 0x21e1cde6, 5); MD5STEP (F2, d, a, b, c, in[14] + 0xc33707d6, 9); MD5STEP (F2, c, d, a, b, in[3] + 0xf4d50d87, 14); MD5STEP (F2, b, c, d, a, in[8] + 0x455a14ed, 20); MD5STEP (F2, a, b, c, d, in[13] + 0xa9e3e905, 5); MD5STEP (F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); MD5STEP (F2, c, d, a, b, in[7] + 0x676f02d9, 14); MD5STEP (F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); MD5STEP (F3, a, b, c, d, in[5] + 0xfffa3942, 4); MD5STEP (F3, d, a, b, c, in[8] + 0x8771f681, 11); MD5STEP (F3, c, d, a, b, in[11] + 0x6d9d6122, 16); MD5STEP (F3, b, c, d, a, in[14] + 0xfde5380c, 23); MD5STEP (F3, a, b, c, d, in[1] + 0xa4beea44, 4); MD5STEP (F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); MD5STEP (F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); MD5STEP (F3, b, c, d, a, in[10] + 0xbebfbc70, 23); MD5STEP (F3, a, b, c, d, in[13] + 0x289b7ec6, 4); MD5STEP (F3, d, a, b, c, in[0] + 0xeaa127fa, 11); MD5STEP (F3, c, d, a, b, in[3] + 0xd4ef3085, 16); MD5STEP (F3, b, c, d, a, in[6] + 0x04881d05, 23); MD5STEP (F3, a, b, c, d, in[9] + 0xd9d4d039, 4); MD5STEP (F3, d, a, b, c, in[12] + 0xe6db99e5, 11); MD5STEP (F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); MD5STEP (F3, b, c, d, a, in[2] + 0xc4ac5665, 23); MD5STEP (F4, a, b, c, d, in[0] + 0xf4292244, 6); MD5STEP (F4, d, a, b, c, in[7] + 0x432aff97, 10); MD5STEP (F4, c, d, a, b, in[14] + 0xab9423a7, 15); MD5STEP (F4, b, c, d, a, in[5] + 0xfc93a039, 21); MD5STEP (F4, a, b, c, d, in[12] + 0x655b59c3, 6); MD5STEP (F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); MD5STEP (F4, c, d, a, b, in[10] + 0xffeff47d, 15); MD5STEP (F4, b, c, d, a, in[1] + 0x85845dd1, 21); MD5STEP (F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); MD5STEP (F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); MD5STEP (F4, c, d, a, b, in[6] + 0xa3014314, 15); MD5STEP (F4, b, c, d, a, in[13] + 0x4e0811a1, 21); MD5STEP (F4, a, b, c, d, in[4] + 0xf7537e82, 6); MD5STEP (F4, d, a, b, c, in[11] + 0xbd3af235, 10); MD5STEP (F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); MD5STEP (F4, b, c, d, a, in[9] + 0xeb86d391, 21); buf[0] += a; buf[1] += b; buf[2] += c; buf[3] += d; --- NEW FILE: md5.h --- #ifndef MD5_H #define MD5_H #include "_stdint.h" #ifndef uint32 typedef uint32_t uint32; struct MD5Context uint32 buf[4]; uint32 bits[2]; unsigned char in[64]; }; extern void MD5Init (struct MD5Context *ctx); extern void MD5Update (struct MD5Context *ctx, const char *buf, unsigned len); extern void MD5Final (unsigned char digest[16], struct MD5Context *ctx); extern void MD5Transform (uint32 buf[4], uint32 in[16]); * This is needed to make RSAREF happy on some MS-DOS compilers. typedef struct MD5Context MD5_CTX; #endif /* !MD5_H */ |
From: <wt...@ke...> - 2008-09-23 17:48:38
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Tue Sep 23 2008 17:48:28 UTC Log message: * gst-libs/gst/rtsp/gstrtspmessage.c: (gst_rtsp_message_parse_request), (gst_rtsp_message_parse_response): Fix the g_return_val_if_fail() statements. Modified files: . : ChangeLog gst-libs/gst/rtsp: gstrtspmessage.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.4123&r2=1.4124 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspmessage.c.diff?r1=1.6&r2=1.7 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.4123 retrieving revision 1.4124 diff -u -d -r1.4123 -r1.4124 --- ChangeLog 22 Sep 2008 17:44:11 -0000 1.4123 +++ ChangeLog 23 Sep 2008 17:48:12 -0000 1.4124 @@ -1,3 +1,10 @@ +2008-09-23 Wim Taymans <wim...@co...> + + * gst-libs/gst/rtsp/gstrtspmessage.c: + (gst_rtsp_message_parse_request), + (gst_rtsp_message_parse_response): + Fix the g_return_val_if_fail() statements. 2008-09-22 Michael Smith <ms...@so...> * gst-libs/gst/tag/gsttagdemux.c: Index: gstrtspmessage.c RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspmessage.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- gstrtspmessage.c 7 Feb 2008 12:17:49 -0000 1.6 +++ gstrtspmessage.c 23 Sep 2008 17:48:14 -0000 1.7 @@ -213,7 +213,7 @@ GstRTSPMethod * method, const gchar ** uri, GstRTSPVersion * version) { g_return_val_if_fail (msg != NULL, GST_RTSP_EINVAL); - g_return_val_if_fail (msg->type != GST_RTSP_MESSAGE_REQUEST, GST_RTSP_EINVAL); + g_return_val_if_fail (msg->type == GST_RTSP_MESSAGE_REQUEST, GST_RTSP_EINVAL); if (method) *method = msg->type_data.request.method; @@ -340,7 +340,7 @@ GstRTSPStatusCode * code, const gchar ** reason, GstRTSPVersion * version) - g_return_val_if_fail (msg->type != GST_RTSP_MESSAGE_RESPONSE, + g_return_val_if_fail (msg->type == GST_RTSP_MESSAGE_RESPONSE, GST_RTSP_EINVAL); if (code) |
From: <wt...@ke...> - 2008-11-03 10:49:42
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Mon Nov 03 2008 10:49:38 UTC Log message: Patch by: Damien Lespiau <damien.lespiau gmail com> * gst-libs/gst/rtsp/gstrtspconnection.c: (gst_rtsp_connection_write): Make the next call to poll not depend on previous calls to poll with or without reading from the active descriptor. Fixes #544293. Modified files: . : ChangeLog gst-libs/gst/rtsp: gstrtspconnection.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.4178&r2=1.4179 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c.diff?r1=1.20&r2=1.21 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.4178 retrieving revision 1.4179 diff -u -d -r1.4178 -r1.4179 --- ChangeLog 31 Oct 2008 09:49:54 -0000 1.4178 +++ ChangeLog 3 Nov 2008 10:49:22 -0000 1.4179 @@ -1,3 +1,12 @@ +2008-11-03 Wim Taymans <wim...@co...> + + Patch by: Damien Lespiau <damien.lespiau gmail com> + * gst-libs/gst/rtsp/gstrtspconnection.c: + (gst_rtsp_connection_write): + Make the next call to poll not depend on previous calls to poll with or + without reading from the active descriptor. Fixes #544293. 2008-10-31 Wim Taymans <wim...@co...> Patch by: Nick Haddad <nick at haddads dot net> Index: gstrtspconnection.c RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- gstrtspconnection.c 11 Jun 2008 20:13:00 -0000 1.20 +++ gstrtspconnection.c 3 Nov 2008 10:49:24 -0000 1.21 @@ -506,6 +506,8 @@ gst_poll_set_controllable (conn->fdset, TRUE); gst_poll_fd_ctl_write (conn->fdset, &conn->fd, TRUE); gst_poll_fd_ctl_read (conn->fdset, &conn->fd, FALSE); + /* clear all previous poll results */ + gst_poll_fd_ignored (conn->fdset, &conn->fd); to = timeout ? GST_TIMEVAL_TO_TIME (*timeout) : GST_CLOCK_TIME_NONE; |
From: <wt...@ke...> - 2008-11-27 11:17:07
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Thu Nov 27 2008 11:16:58 UTC Log message: Patch by: ì´ë¬¸í <iwings at gmail dot com> * gst-libs/gst/rtsp/gstrtspconnection.c: (gst_rtsp_connection_connect): A successful gst_poll_wait() doesn't always mean successful connect() on Windows. We should check errors by calling gst_poll_fd_has_error(). See #561924. Modified files: . : ChangeLog gst-libs/gst/rtsp: gstrtspconnection.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.4218&r2=1.4219 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c.diff?r1=1.21&r2=1.22 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.4218 retrieving revision 1.4219 diff -u -d -r1.4218 -r1.4219 --- ChangeLog 25 Nov 2008 15:33:29 -0000 1.4218 +++ ChangeLog 27 Nov 2008 11:16:42 -0000 1.4219 @@ -1,3 +1,13 @@ +2008-11-27 Wim Taymans <wim...@co...> + + Patch by: ì´ë¬¸í <iwings at gmail dot com> + * gst-libs/gst/rtsp/gstrtspconnection.c: + (gst_rtsp_connection_connect): + A successful gst_poll_wait() doesn't always mean successful connect() on + Windows. We should check errors by calling gst_poll_fd_has_error(). + See #561924. 2008-11-25 Wim Taymans <wim...@co...> * gst-libs/gst/rtp/gstrtcpbuffer.c: Index: gstrtspconnection.c RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -d -r1.21 -r1.22 --- gstrtspconnection.c 3 Nov 2008 10:49:24 -0000 1.21 +++ gstrtspconnection.c 27 Nov 2008 11:16:44 -0000 1.22 @@ -287,6 +287,10 @@ else if (retval == -1) goto sys_error; + /* we can still have an error connecting on windows */ + if (gst_poll_fd_has_error (conn->fdset, &conn->fd)) + goto sys_error; gst_poll_fd_ignored (conn->fdset, &conn->fd); done: |