(conn net.Conn, readCallback func())
| 325 | } |
| 326 | |
| 327 | func handleDomainSocketClient(conn net.Conn, readCallback func()) { |
| 328 | var linkIdContainer atomic.Int32 |
| 329 | proxy := MakeRpcProxy("domain") |
| 330 | go func() { |
| 331 | defer func() { |
| 332 | panichandler.PanicHandler("handleDomainSocketClient:AdaptOutputChToStream", recover()) |
| 333 | }() |
| 334 | writeErr := AdaptOutputChToStream(proxy.ToRemoteCh, conn) |
| 335 | if writeErr != nil { |
| 336 | log.Printf("error writing to domain socket: %v\n", writeErr) |
| 337 | } |
| 338 | }() |
| 339 | go func() { |
| 340 | // when input is closed, close the connection |
| 341 | defer func() { |
| 342 | panichandler.PanicHandler("handleDomainSocketClient:AdaptStreamToMsgCh", recover()) |
| 343 | }() |
| 344 | defer func() { |
| 345 | conn.Close() |
| 346 | close(proxy.FromRemoteCh) |
| 347 | close(proxy.ToRemoteCh) |
| 348 | linkId := linkIdContainer.Load() |
| 349 | if linkId != baseds.NoLinkId { |
| 350 | DefaultRouter.UnregisterLink(baseds.LinkId(linkId)) |
| 351 | } |
| 352 | }() |
| 353 | AdaptStreamToMsgCh(conn, proxy.FromRemoteCh, readCallback) |
| 354 | }() |
| 355 | linkId := DefaultRouter.RegisterUntrustedLink(proxy) |
| 356 | linkIdContainer.Store(int32(linkId)) |
| 357 | } |
| 358 | |
| 359 | // only for use on client |
| 360 | func ExtractUnverifiedRpcContext(tokenStr string) (*wshrpc.RpcContext, error) { |
no test coverage detected