All streams
Search
Write a publication
Pull to refresh
0
0
Максим Галаганов @darkwrat

Пользователь

Send message

Можно включить MPTCP без пересборки приложения, используя переменные окружения.

% GODEBUG=multipathtcp=1 go run mptcp.go &
[1] 70247
% mptcpize run curl 'http://127.0.0.1:8080/'
conn.MultipathTCP() = (true, <nil>)
Исходник сервера
package main

import (
	"context"
	"fmt"
	"log"
	"net"
	"net/http"
)

type ctxKey uint8

const(
	ctxHttpConnKey = ctxKey(iota)
)

func ctxHttpSaveConn(ctx context.Context, conn net.Conn) context.Context {
	return context.WithValue(ctx, ctxHttpConnKey, conn)
}

func ctxHttpLoadConn(ctx context.Context) *net.TCPConn {
	return ctx.Value(ctxHttpConnKey).(*net.TCPConn)
}

func main() {
	serv := &http.Server{
		Addr: ":8080",
		ConnContext: ctxHttpSaveConn,
		Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
			conn := ctxHttpLoadConn(r.Context())
			mptcp, err := conn.MultipathTCP()
			fmt.Fprintf(w, "conn.MultipathTCP() = (%t, %v)", mptcp, err)
		}),
	}

	log.Fatal(serv.ListenAndServe())
}

Ушёл с подписки яндекса на гугл больше года назад после борьбы с приложением за прослушивание музыки альбомами. В гугле в три клика можно проиграть все треки известного альбома в правильном порядке, яндекс норовил их рандомизировать и в навигацию подпихивал рекомендации.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity