gstreamer/gst/tcp
Tim-Philipp Müller 6db2ee56b6 tcpserversink: don't error out if clients send us something, just ignore it
We don't expect clients to send us any data, but if they do, just
ignore it. Web browsers might send us an HTTP request for example,
but some will still be happy if we just send them data without
a proper HTTP response.

There was a bug in the reading code path. We only have a small
read buffer and would provoke an EWOULDBLOCK trying to read
because we don't bail out of the loop early enough.

https://bugzilla.gnome.org/show_bug.cgi?id=743834
2015-04-04 21:38:40 +01:00
..
.gitignore gst/tcp/: Added burst on connect sync_method, deprecated sync_clients, streamlined the sync code some more. 2004-10-29 11:10:38 +00:00
gstmultifdsink.c docs: remove outdated and pointless 'Last reviewed' lines from docs 2014-04-26 23:28:57 +01:00
gstmultifdsink.h Fix FSF address 2012-11-03 23:05:09 +00:00
gstmultihandlesink.c Don't compare booleans for equality to TRUE and FALSE 2014-12-01 09:51:12 +01:00
gstmultihandlesink.h Fix FSF address 2012-11-03 23:05:09 +00:00
gstmultioutputsink.c Don't compare booleans for equality to TRUE and FALSE 2014-12-01 09:51:12 +01:00
gstmultisocketsink.c tcpserversink: don't error out if clients send us something, just ignore it 2015-04-04 21:38:40 +01:00
gstmultisocketsink.h Fix FSF address 2012-11-03 23:05:09 +00:00
gstsocketsrc.c socketsrc: Add support for GstNetControlMessageMeta 2015-03-14 13:23:28 +01:00
gstsocketsrc.h socketsrc: Add connection-closed-by-peer signal 2015-03-13 20:05:00 +01:00
gsttcp.h tcp: Use the generic marshaller instead of generating custom ones 2013-04-25 09:20:29 +02:00
gsttcpclientsink.c Fix FSF address 2012-11-03 23:05:09 +00:00
gsttcpclientsink.h Fix FSF address 2012-11-03 23:05:09 +00:00
gsttcpclientsrc.c tcpclientsrc: return FLUSHING when select() is canceled 2014-06-13 10:04:47 +01:00
gsttcpclientsrc.h Fix FSF address 2012-11-03 23:05:09 +00:00
gsttcpplugin.c tcp: Add element socketsrc 2015-03-13 20:05:00 +01:00
gsttcpserversink.c tcpserversink: Don't leak a GSocket and a GInetSocketAddress 2014-11-07 10:15:43 +01:00
gsttcpserversink.h Fix FSF address 2012-11-03 23:05:09 +00:00
gsttcpserversrc.c tcpserversrc: close the server socket after accepting a connection 2014-06-13 11:18:10 +01:00
gsttcpserversrc.h Fix FSF address 2012-11-03 23:05:09 +00:00
Makefile.am tcp: Add element socketsrc 2015-03-13 20:05:00 +01:00
README docs: add examples for tcp elements, also use correct section name. Fixes #564139 2009-03-23 17:03:38 +02:00
tcp.vcproj more working plugins 2004-07-27 21:41:30 +00:00

This part of the documentation is for the new tcp elements:
- tcpclientsrc
- tcpclientsink
- tcpserversrc
- tcpserversink
                                                                                
TESTS
-----
Use these tests to test functionality of the various tcp plugins

* server: nc -l -p 3000
  client: nc localhost 3000
  everything you type in the server is shown on the client
  everything you type in the client is shown on the server

* server: nc -l -p 3000
  client: gst-launch tcpclientsrc protocol=none port=3000 ! fdsink fd=2
  everything you type in the server is shown on the client

* server: nc -l -p 3000
  client: gst-launch fdsrc fd=1 ! tcpclientsink protocol=none port=3000
  everything you type in the client is shown on the server

* server: gst-launch tcpserversrc protocol=none port=3000 ! fdsink fd=2
  client: gst-launch fdsrc fd=1 ! tcpclientsink protocol=none port=3000

* server: gst-launch fdsrc fd=1 ! tcpserversink protocol=none port=3000
  client: gst-launch tcpclientsrc protocol=none port=3000 ! fdsink fd=2
  -> Received first buffer without caps set

TODO
----
- implement DNS resolution

multifdsink
-----------
- operation:
  - client fd gets added when "add" signal gets emitted on multifdsink
  - signal handler creates a GstTCPClient structure, adds it to ->clients,
    and adds the fd to ->fd_hash, then emits client-added
  - client 

  - when a buffer comes in:
    - the _render vmethod puts the buffer on the global queue
    - and increases bytes_to_serve
    - (currently it sets streamheaders, but since this is treated globally
       this is wrong - clients can be at different positions in the stream)

  - when a client issues a write (ie requests data):
    - when using GDP, if no caps sent yet, send caps first, then set caps_sent
    - if streamheader buffers, and we haven't sent yet to this client,
      send current streamheader buffers, then set streamheader_sent
    - send out buffers