In the sockclose event $sockerr is set to 3 when the connection was established with ssl. Everything in the socket behaves as expected and identically to the socket without ssl. Even if there is a difference in low level behavior when handling ssl, I don't think $sockerr should be > 0 as no error has actually occurred. In both cases I receive a perfect copy of the file from the server.

Code:
//http | http -ssl

-http-
sockerr: 0
wsmsg: [0] Unknown Error
header size: 734
data size: 33366

-https-
sockerr: 3
wsmsg: [10101] Host disconnected
header size: 734
data size: 33370


Code:
alias http {
  if ($1 == -ssl) { var %ssl = 1 | tokenize 32 $2- }
  var %host = $iif($1,$1,www.google.com)
  var %sockname = $+(http,$ticks,$rand(1000,9999))
  hadd -m %sockname headerfile $+(%sockname,_header.txt)
  hadd %sockname datafile $+(%sockname,_data.html)
  sockopen $iif(%ssl,-e) %sockname %host $iif(%ssl,443,80)
}

on *:sockopen:http*:{
  var %a = sockwrite -n $sockname

  var %host = $sock($sockname).addr
  var %port = $sock($sockname).port
  var %method = GET 
  var %page = /

  %a %method %page HTTP/1.0
  %a Host: $+(%host,:,%port)
  %a Connection: close
  %a $crlf
}

on *:sockread:http*:{
  var %header

  if (!$hget($sockname,header)) {
    sockread %header
    while (%header != $null) {
      write $hget($sockname,headerfile) %header
      sockread %header
    }
    if ($sockbr) hadd $sockname header 1
  }
  if ($hget($sockname,header)) {
    sockread &read
    while ($sockbr) {
      bwrite $hget($sockname,datafile) -1 -1 &read
      sockread &read
    }
  }
}

on *:sockclose:http*:{
  echo -ag sockerr: $sockerr
  echo -ag wsmsg: $sock($sockname).wsmsg
  echo -ag header size: $file($hget($sockname,headerfile)).size
  echo -ag data size: $file($hget($sockname,datafile)).size
  
  .remove $hget($sockname,headerfile)
  .remove $hget($sockname,datafile)
  hfree $sockname
}