Thanks. In that version of C code the port is set by argv and name ipsink.
by putting a queue leaky=downstream on the client the time sync issue is gone replaced with a slightly annoying flash of image every few seconds,
(I assume this is syncing)
I now pass the complete pipeline as an argv - using execl, not system because of the hastles of formatting the pipeline ("s etc)
What version of GStreamer are you using? (e.g. gst-inspect-1.0 jpegparse | grep version)
That sounds like a bug in the jpeg parser perhaps.
Something else you could try is: jpegenc ! matroskamux ! tcpserversink on the sender side, and then tcpclientsrc ! matroskademux ! jpegdec (or avdec_mjpeg) on the client side. (This is also more flexible in case you want to try other codecs later.)
Not sure, but if previous advice is not enough, you may try specifying I420 format after h264 decoder and see if it helps.
You might also try adding identity sync=1 after jpegparse if any.