~emersion

France

https://emersion.fr

I'm Simon Ser, I write open-source software.

Trackers

~emersion/tlstunnel

Last active 13 hours ago

~emersion/soju

Last active a day ago

~emersion/goguma

Last active 3 days ago

~emersion/grim

Last active 6 days ago

~emersion/pixfmtdb

Last active 6 days ago

~emersion/chathistorysync

Last active 11 days ago

~emersion/kanshi

Last active 11 days ago

~emersion/gamja

Last active 12 days ago

~emersion/pushgarden

Last active 13 days ago

~emersion/basu

Last active a month ago
View more

#24 Add Prometheus/OpenMetrics instrumentation 13 hours ago

enhancement added by ~emersion on ~emersion/tlstunnel

#24 Add Prometheus/OpenMetrics instrumentation 13 hours ago

Ticket created by ~emersion on ~emersion/tlstunnel

#21 tlstunnel should be able to bind to its ports as root and then drop to another user 13 hours ago

Comment by ~emersion on ~emersion/tlstunnel

I'd rather not add this feature.

REPORTED RESOLVED CLOSED

#15 Allow customizing TLS client options 13 hours ago

Comment by ~emersion on ~emersion/tlstunnel

tls_certfp has been added and is one of these.

#207 Duplicated upstream connection due to race a day ago

upstream added by ~emersion on ~emersion/soju

#207 Duplicated upstream connection due to race a day ago

bug added by ~emersion on ~emersion/soju

#207 Duplicated upstream connection due to race a day ago

Ticket created by ~emersion on ~emersion/soju

  1. connectToUpstream called, takes some time
  2. User sends net update to the service
  3. network.stop is called, but net.conn == nil because the connection from step (1) is still being established
  4. connectToUpstream is called a second time and succeeds
  5. The connection initiated in step (1) finally succeeds

#206 Use safer pattern for record updates a day ago

enhancement added by ~emersion on ~emersion/soju

#206 Use safer pattern for record updates a day ago

Ticket created by ~emersion on ~emersion/soju

A common pattern in soju is:

record := user.User // copy
record.Something = 42
user.updateUser(&record)

This is suboptimal because it's pretty easy to forget the copy and mutate the data directly:

user.Something = 42
user.updateUser(&user.User)

This is a mistake because the in-memory state goes out-of-sync with the DB state if updateUser fails.

Something safer could be:

user.updateUser(func(record *database.User) {
    record.Something = 42
})

#2 Add support for DNS challenge a day ago

Comment by ~emersion on ~emersion/tlstunnel

Simon Ser referenced this ticket in commit 662136e.