Просмотр исходного кода

Fix: windows UDPConn compile errors

Rod Hynes 7 лет назад
Родитель
Сommit
0d74c6cd7b
4 измененных файлов с 46 добавлено и 2 удалено
  1. 1 1
      psiphon/UDPConn.go
  2. 5 0
      psiphon/net_darwin.go
  3. 6 1
      psiphon/net_other.go
  4. 34 0
      psiphon/net_windows.go

+ 1 - 1
psiphon/UDPConn.go

@@ -95,7 +95,7 @@ func NewUDPConn(
 	setAdditionalSocketOptions(socketFD)
 
 	if config.DeviceBinder != nil {
-		_, err = config.DeviceBinder.BindToDevice(socketFD)
+		err := bindToDeviceCallWrapper(config.DeviceBinder, socketFD)
 		if err != nil {
 			syscall.Close(socketFD)
 			return nil, nil, common.ContextError(fmt.Errorf("BindToDevice failed: %s", err))

+ 5 - 0
psiphon/net_darwin.go

@@ -26,3 +26,8 @@ import (
 func setAdditionalSocketOptions(socketFd int) {
 	syscall.SetsockoptInt(socketFd, syscall.SOL_SOCKET, syscall.SO_NOSIGPIPE, 1)
 }
+
+func bindToDeviceCallWrapper(deviceBinder DeviceBinder, socketFD int) error {
+	_, err := deviceBinder.BindToDevice(socketFD)
+	return err
+}

+ 6 - 1
psiphon/net_nodarwin.go → psiphon/net_other.go

@@ -1,4 +1,4 @@
-// +build !darwin
+// +build !darwin,!windows
 
 /*
  * Copyright (c) 2017, Psiphon Inc.
@@ -23,3 +23,8 @@ package psiphon
 
 func setAdditionalSocketOptions(_ int) {
 }
+
+func bindToDeviceCallWrapper(deviceBinder DeviceBinder, socketFD int) error {
+	_, err := deviceBinder.BindToDevice(socketFD)
+	return err
+}

+ 34 - 0
psiphon/net_windows.go

@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2018, Psiphon Inc.
+ * All rights reserved.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+package psiphon
+
+import (
+	"errors"
+	"syscall"
+
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common"
+)
+
+func setAdditionalSocketOptions(socketFd syscall.Handle) {
+}
+
+func bindToDeviceCallWrapper(deviceBinder DeviceBinder, socketFD syscall.Handle) error {
+	return common.ContextError(errors.New("DeviceBinder with syscall.Handle not supported"))
+}