Ubuntu 14.04+ can’t connect to some servers

Some servers have trouble talking to Ubuntu 14.04+. This is because OpenSSL 1.0.1g, which included a patch to use a different TLS padding value, was not packaged for Ubuntu; OpenSSL security fixes have been backported to Ubuntu’s 1.0.1f since then. The patch in question bears this commit manifest:

commit 6411b83e52fdfd0d3563d50a4dc00838b142fb2c
Author: Dr. Stephen Henson <steve@openssl.org>
Date:   Sat Apr 5 20:43:54 2014 +0100

Set TLS padding extension value.

Enable TLS padding extension using official value from:

http://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml
(cherry picked from commit cd6bd5ffda616822b52104fee0c4c7d623fd4f53)

Conflicts:

CHANGES

It seems that some MS IIS servers are configured to reject TLS connections that advertise a particular version and do not use this new padding spec, probably in an attempt to mitigate the POODLE attack. Interestingly, OpenSSL 1.0.1a still seems to work.

This problem will often manifest as a hung connection on SSL protocol negotiation, or an error stating that there was an unknown SSL protocol error. It can be worked around without patches by manually specifying the cipher on the commandline.

PulseAudio: combine sinks for simultaneous output

Most stuff on this is dated and/or speculative, so here’s a quick and easy howto on combining sinks in PulseAudio for simultaneous output.

If you’d like to include a Bluetooth headset or similar transient output device in your combined sink, please ensure it is correctly connected and visible in your preferred PulseAudio volume manager before proceeding.

The module-combine-sink module (previously simply “module-combine“) provides the functionality we need.

pacmd is [usually] distributed with PulseAudio and allows the user to send commands to the running PA server. Start pacmd and send list-sinks to the server. You’ll get output like:

x sink(s) available.
index: 0
name:
driver:
flags: HARDWARE DECIBEL_VOLUME LATENCY FLAT_VOLUME DYNAMIC_LATENCY
[...]
index: 1
name:
driver:
flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY FLAT_VOLUME DYNAMIC_LATENCY
[...]

Read this list and copy the names of the sinks (without the enclosing brackets) that you would like to combine; they should be fairly self-explanatory.

Then, create a combined sink containing all sinks on which you’d like simultaneous output by sending this command to the pacmd:

load-module module-combine-sink sink_name=combined slaves=alsa_output.pci-0000_09_04.0.analog-stereo,alsa_output.pci-0000_01_00.1.hdmi-stereo-extra3

sink_name is the name by which the sink will be identified and slaves is a comma-delimited list of all sinks upon which simultaneous output of the desired stream should occur.

This new sink should be immediately visible in your volume manager, from which you can switch individual streams to the combined sink or set the new sink as the default output.

Note that on transient devices like Bluetooth headsets, it may be necessary to recreate this sink each time the device is reconnected. In my experience, it’s just simpler to restart PulseAudio before connecting your new transient device, or else the old sink may linger and create issues. This can be done simply by issuing pulseaudio --kill; pulseaudio --start at your user’s shell.