Skip to content

Commit

Permalink
Add a QuicConfig to squic Dial/Listen methods (#2180)
Browse files Browse the repository at this point in the history
  • Loading branch information
chaehni authored and lukedirtwalker committed Nov 30, 2018
1 parent d265eb0 commit 3f6ddc1
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 10 deletions.
4 changes: 2 additions & 2 deletions go/examples/pingpong/pingpong.go
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ func (c *client) run() {
// IP address needs to be supplied explicitly. When supplied a local
// port of 0, DialSCION will assign a random free local port.
var err error
c.qsess, err = squic.DialSCION(nil, &local, &remote)
c.qsess, err = squic.DialSCION(nil, &local, &remote, nil)
if err != nil {
LogFatal("Unable to dial", "err", err)
}
Expand Down Expand Up @@ -347,7 +347,7 @@ type server struct {
// On any error, the server exits.
func (s server) run() {
// Listen on SCION address
qsock, err := squic.ListenSCION(nil, &local)
qsock, err := squic.ListenSCION(nil, &local, nil)
if err != nil {
LogFatal("Unable to listen", "err", err)
}
Expand Down
23 changes: 15 additions & 8 deletions go/lib/snet/squic/squic.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,38 +51,45 @@ func Init(keyPath, pemPath string) error {
return nil
}

func DialSCION(network *snet.SCIONNetwork, laddr, raddr *snet.Addr) (quic.Session, error) {
return DialSCIONWithBindSVC(network, laddr, raddr, nil, addr.SvcNone)
func DialSCION(network *snet.SCIONNetwork, laddr, raddr *snet.Addr,
quicConfig *quic.Config) (quic.Session, error) {

return DialSCIONWithBindSVC(network, laddr, raddr, nil, addr.SvcNone, quicConfig)
}

func DialSCIONWithBindSVC(network *snet.SCIONNetwork, laddr, raddr, baddr *snet.Addr,
svc addr.HostSVC) (quic.Session, error) {
svc addr.HostSVC, quicConfig *quic.Config) (quic.Session, error) {

sconn, err := sListen(network, laddr, baddr, svc)
if err != nil {
return nil, err
}
// Use dummy hostname, as it's used for SNI, and we're not doing cert verification.
return quic.Dial(sconn, raddr, "host:0", cliTlsCfg, nil)
return quic.Dial(sconn, raddr, "host:0", cliTlsCfg, quicConfig)
}

func ListenSCION(network *snet.SCIONNetwork, laddr *snet.Addr) (quic.Listener, error) {
return ListenSCIONWithBindSVC(network, laddr, nil, addr.SvcNone)
func ListenSCION(network *snet.SCIONNetwork, laddr *snet.Addr,
quicConfig *quic.Config) (quic.Listener, error) {

return ListenSCIONWithBindSVC(network, laddr, nil, addr.SvcNone, quicConfig)
}

func ListenSCIONWithBindSVC(network *snet.SCIONNetwork, laddr, baddr *snet.Addr,
svc addr.HostSVC) (quic.Listener, error) {
svc addr.HostSVC, quicConfig *quic.Config) (quic.Listener, error) {

if len(srvTlsCfg.Certificates) == 0 {
return nil, common.NewBasicError("squic: No server TLS certificate configured", nil)
}
sconn, err := sListen(network, laddr, baddr, svc)
if err != nil {
return nil, err
}
return quic.Listen(sconn, srvTlsCfg, nil)
return quic.Listen(sconn, srvTlsCfg, quicConfig)
}

func sListen(network *snet.SCIONNetwork, laddr, baddr *snet.Addr,
svc addr.HostSVC) (snet.Conn, error) {

if network == nil {
network = snet.DefNetwork
}
Expand Down

0 comments on commit 3f6ddc1

Please sign in to comment.