Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
K
koko
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
koko
Commits
f15b0990
Commit
f15b0990
authored
Jun 12, 2019
by
ibuler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Bugfix] 修复锁无法释放的问题
parent
286c0e8f
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
7 additions
and
7 deletions
+7
-7
transport.go
pkg/proxy/transport.go
+1
-1
connmanager.go
pkg/srvconn/connmanager.go
+6
-6
No files found.
pkg/proxy/transport.go
View file @
f15b0990
...
...
@@ -52,7 +52,7 @@ func (dt *DirectTransport) Keep() {
if
!
dt
.
closed
{
dt
.
ch
<-
buf
[
:
n
]
}
else
{
logger
.
Debug
(
"Transport "
)
logger
.
Debug
(
"Transport
closed
"
)
break
}
}
...
...
pkg/srvconn/connmanager.go
View file @
f15b0990
package
srvconn
import
(
"encoding/json"
"errors"
"fmt"
"github.com/jumpserver/koko/pkg/service"
...
...
@@ -67,8 +66,6 @@ func (sc *SSHClientConfig) Config() (config *gossh.ClientConfig, err error) {
func
(
sc
*
SSHClientConfig
)
DialProxy
()
(
client
*
gossh
.
Client
,
err
error
)
{
for
_
,
p
:=
range
sc
.
Proxy
{
data
,
_
:=
json
.
Marshal
(
p
)
fmt
.
Println
(
string
(
data
))
client
,
err
=
p
.
Dial
()
if
err
==
nil
{
logger
.
Debugf
(
"Connect proxy host %s:%s success"
,
p
.
Host
,
p
.
Port
)
...
...
@@ -197,15 +194,18 @@ func GetClientFromCache(user *model.User, asset *model.Asset, systemUser *model.
}
func
RecycleClient
(
client
*
gossh
.
Client
)
{
clientLock
.
Lock
()
defer
clientLock
.
Unlock
()
clientLock
.
RLock
()
counter
,
ok
:=
clientsRefCounter
[
client
]
clientLock
.
RUnlock
()
if
counter
,
ok
:=
clientsRefCounter
[
client
];
ok
{
if
ok
{
if
counter
==
1
{
logger
.
Debug
(
"Recycle client: close it"
)
CloseClient
(
client
)
}
else
{
clientLock
.
Lock
()
clientsRefCounter
[
client
]
--
clientLock
.
Unlock
()
logger
.
Debugf
(
"Recycle client: ref -1: %d"
,
clientsRefCounter
[
client
])
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment