Browse Source

fix crash when tun app has no socket option

Shelikhoo 2 years ago
parent
commit
e87af12bf8
2 changed files with 11 additions and 7 deletions
  1. 4 2
      app/tun/handler_tcp.go
  2. 7 5
      app/tun/stack.go

+ 4 - 2
app/tun/handler_tcp.go

@@ -55,8 +55,10 @@ func SetTCPHandler(ctx context.Context, dispatcher routing.Dispatcher, policyMan
 			}
 			defer r.Complete(false)
 
-			if err := applySocketOptions(s, linkedEndpoint, config.SocketSettings); err != nil {
-				newError("failed to apply socket options: ", err).WriteToLog(session.ExportIDToError(ctx))
+			if config.SocketSettings != nil {
+				if err := applySocketOptions(s, linkedEndpoint, config.SocketSettings); err != nil {
+					newError("failed to apply socket options: ", err).WriteToLog(session.ExportIDToError(ctx))
+				}
 			}
 
 			conn := &tcpConn{

+ 7 - 5
app/tun/stack.go

@@ -39,12 +39,14 @@ func (t *TUN) CreateStack(linkedEndpoint stack.LinkEndpoint) (*stack.Stack, erro
 		SetSpoofing(nicID, t.config.EnableSpoofing),
 	}
 
-	if size := t.config.SocketSettings.TxBufSize; size != 0 {
-		opts = append(opts, SetTCPSendBufferSize(int(size)))
-	}
+	if t.config.SocketSettings != nil {
+		if size := t.config.SocketSettings.TxBufSize; size != 0 {
+			opts = append(opts, SetTCPSendBufferSize(int(size)))
+		}
 
-	if size := t.config.SocketSettings.RxBufSize; size != 0 {
-		opts = append(opts, SetTCPReceiveBufferSize(int(size)))
+		if size := t.config.SocketSettings.RxBufSize; size != 0 {
+			opts = append(opts, SetTCPReceiveBufferSize(int(size)))
+		}
 	}
 
 	for _, opt := range opts {