Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
L
libvncserver
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
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
rasky
libvncserver
Commits
97299606
Commit
97299606
authored
Aug 30, 2004
by
dscho
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
global structures/functions should have "rfb", "sra" or "zrle" as prefix,
while structure members should not
parent
0d3b958b
Changes
36
Show whitespace changes
Inline
Side-by-side
Showing
36 changed files
with
589 additions
and
590 deletions
+589
-590
zippy.c
contrib/zippy.c
+4
-4
colourmaptest.c
examples/colourmaptest.c
+1
-1
example.c
examples/example.c
+2
-2
pnmshow.c
examples/pnmshow.c
+2
-2
pnmshow24.c
examples/pnmshow24.c
+1
-1
storepasswd.c
examples/storepasswd.c
+1
-1
vncev.c
examples/vncev.c
+1
-1
rfbproto.c
libvncclient/rfbproto.c
+10
-10
auth.c
libvncserver/auth.c
+6
-6
cargs.c
libvncserver/cargs.c
+8
-8
corre.c
libvncserver/corre.c
+3
-3
cursor.c
libvncserver/cursor.c
+17
-17
d3des.c
libvncserver/d3des.c
+5
-5
d3des.h
libvncserver/d3des.h
+4
-4
font.c
libvncserver/font.c
+2
-2
hextile.c
libvncserver/hextile.c
+6
-6
httpd.c
libvncserver/httpd.c
+29
-29
main.c
libvncserver/main.c
+149
-149
rfbserver.c
libvncserver/rfbserver.c
+51
-51
rre.c
libvncserver/rre.c
+3
-3
selbox.c
libvncserver/selbox.c
+4
-4
sockets.c
libvncserver/sockets.c
+22
-22
stats.c
libvncserver/stats.c
+38
-38
tight.c
libvncserver/tight.c
+42
-42
translate.c
libvncserver/translate.c
+18
-18
vncauth.c
libvncserver/vncauth.c
+10
-10
zlib.c
libvncserver/zlib.c
+3
-3
zrle.c
libvncserver/zrle.c
+3
-3
rfb.h
rfb/rfb.h
+58
-59
rfbproto.h
rfb/rfbproto.h
+4
-4
cargstest.c
test/cargstest.c
+2
-2
copyrecttest.c
test/copyrecttest.c
+1
-1
LinuxVNC.c
vncterm/LinuxVNC.c
+5
-5
VNConsole.c
vncterm/VNConsole.c
+28
-28
VNConsole.h
vncterm/VNConsole.h
+1
-1
x11vnc.c
x11vnc/x11vnc.c
+45
-45
No files found.
contrib/zippy.c
View file @
97299606
...
@@ -29,7 +29,7 @@ int main (int argc, char **argv)
...
@@ -29,7 +29,7 @@ int main (int argc, char **argv)
server
=
rfbGetScreen
(
&
argc
,
argv
,
maxx
,
maxy
,
8
,
3
,
bpp
);
server
=
rfbGetScreen
(
&
argc
,
argv
,
maxx
,
maxy
,
8
,
3
,
bpp
);
server
->
desktopName
=
"Zippy das wundersquirrel
\'
s VNC server"
;
server
->
desktopName
=
"Zippy das wundersquirrel
\'
s VNC server"
;
server
->
frameBuffer
=
(
char
*
)
malloc
(
maxx
*
maxy
*
bpp
);
server
->
frameBuffer
=
(
char
*
)
malloc
(
maxx
*
maxy
*
bpp
);
server
->
rfbA
lwaysShared
=
TRUE
;
server
->
a
lwaysShared
=
TRUE
;
server
->
kbdAddEvent
=
on_key_press
;
server
->
kbdAddEvent
=
on_key_press
;
server
->
ptrAddEvent
=
on_mouse_event
;
server
->
ptrAddEvent
=
on_mouse_event
;
...
@@ -76,7 +76,7 @@ void draw_primary_colors (char* frame_buffer, int x1, int y1, int x2, int y2)
...
@@ -76,7 +76,7 @@ void draw_primary_colors (char* frame_buffer, int x1, int y1, int x2, int y2)
/* Dscho's versions (slower, but works for bpp != 3 or 4) */
/* Dscho's versions (slower, but works for bpp != 3 or 4) */
void
draw_primary_colours_generic
(
rfbScreenInfoPtr
s
,
int
x1
,
int
y1
,
int
x2
,
int
y2
)
void
draw_primary_colours_generic
(
rfbScreenInfoPtr
s
,
int
x1
,
int
y1
,
int
x2
,
int
y2
)
{
{
rfbPixelFormat
f
=
s
->
rfbS
erverFormat
;
rfbPixelFormat
f
=
s
->
s
erverFormat
;
int
i
,
j
;
int
i
,
j
;
for
(
j
=
y1
;
j
<
y2
;
j
++
)
for
(
j
=
y1
;
j
<
y2
;
j
++
)
for
(
i
=
x1
;
i
<
x2
;
i
++
)
for
(
i
=
x1
;
i
<
x2
;
i
++
)
...
@@ -90,7 +90,7 @@ void draw_primary_colours_generic(rfbScreenInfoPtr s,int x1,int y1,int x2,int y2
...
@@ -90,7 +90,7 @@ void draw_primary_colours_generic(rfbScreenInfoPtr s,int x1,int y1,int x2,int y2
void
draw_primary_colours_generic_fast
(
rfbScreenInfoPtr
s
,
int
x1
,
int
y1
,
int
x2
,
int
y2
)
void
draw_primary_colours_generic_fast
(
rfbScreenInfoPtr
s
,
int
x1
,
int
y1
,
int
x2
,
int
y2
)
{
{
rfbPixelFormat
f
=
s
->
rfbS
erverFormat
;
rfbPixelFormat
f
=
s
->
s
erverFormat
;
int
i
,
j
,
y3
=
(
y1
*
2
+
y2
)
/
3
,
y4
=
(
y1
+
y2
*
2
)
/
3
;
int
i
,
j
,
y3
=
(
y1
*
2
+
y2
)
/
3
,
y4
=
(
y1
+
y2
*
2
)
/
3
;
/* draw first pixel */
/* draw first pixel */
rfbDrawPixel
(
s
,
x1
,
y1
,
f
.
redMax
<<
f
.
redShift
);
rfbDrawPixel
(
s
,
x1
,
y1
,
f
.
redMax
<<
f
.
redShift
);
...
@@ -108,7 +108,7 @@ void draw_primary_colours_generic_fast(rfbScreenInfoPtr s,int x1,int y1,int x2,i
...
@@ -108,7 +108,7 @@ void draw_primary_colours_generic_fast(rfbScreenInfoPtr s,int x1,int y1,int x2,i
void
draw_primary_colours_generic_ultrafast
(
rfbScreenInfoPtr
s
,
int
x1
,
int
y1
,
int
x2
,
int
y2
)
void
draw_primary_colours_generic_ultrafast
(
rfbScreenInfoPtr
s
,
int
x1
,
int
y1
,
int
x2
,
int
y2
)
{
{
rfbPixelFormat
f
=
s
->
rfbS
erverFormat
;
rfbPixelFormat
f
=
s
->
s
erverFormat
;
int
y3
=
(
y1
*
2
+
y2
)
/
3
,
y4
=
(
y1
+
y2
*
2
)
/
3
;
int
y3
=
(
y1
*
2
+
y2
)
/
3
,
y4
=
(
y1
+
y2
*
2
)
/
3
;
/* fill rectangles */
/* fill rectangles */
rfbFillRect
(
s
,
x1
,
y1
,
x2
,
y3
,
f
.
redMax
<<
f
.
redShift
);
rfbFillRect
(
s
,
x1
,
y1
,
x2
,
y3
,
f
.
redMax
<<
f
.
redShift
);
...
...
examples/colourmaptest.c
View file @
97299606
...
@@ -8,7 +8,7 @@ int main(int argc,char** argv)
...
@@ -8,7 +8,7 @@ int main(int argc,char** argv)
rfbScreenInfoPtr
server
=
rfbGetScreen
(
&
argc
,
argv
,
256
,
256
,
8
,
1
,
1
);
rfbScreenInfoPtr
server
=
rfbGetScreen
(
&
argc
,
argv
,
256
,
256
,
8
,
1
,
1
);
server
->
rfbS
erverFormat
.
trueColour
=
FALSE
;
server
->
s
erverFormat
.
trueColour
=
FALSE
;
server
->
colourMap
.
count
=
256
;
server
->
colourMap
.
count
=
256
;
server
->
colourMap
.
is16
=
FALSE
;
server
->
colourMap
.
is16
=
FALSE
;
for
(
i
=
0
;
i
<
256
;
i
++
)
{
for
(
i
=
0
;
i
<
256
;
i
++
)
{
...
...
examples/example.c
View file @
97299606
...
@@ -157,7 +157,7 @@ void doptr(int buttonMask,int x,int y,rfbClientPtr cl)
...
@@ -157,7 +157,7 @@ void doptr(int buttonMask,int x,int y,rfbClientPtr cl)
cd
->
oldx
=
x
;
cd
->
oldy
=
y
;
cd
->
oldButton
=
buttonMask
;
cd
->
oldx
=
x
;
cd
->
oldy
=
y
;
cd
->
oldButton
=
buttonMask
;
}
}
d
efaultPtrAddEvent
(
buttonMask
,
x
,
y
,
cl
);
rfbD
efaultPtrAddEvent
(
buttonMask
,
x
,
y
,
cl
);
}
}
/* aux function to draw a character to x, y */
/* aux function to draw a character to x, y */
...
@@ -277,7 +277,7 @@ int main(int argc,char** argv)
...
@@ -277,7 +277,7 @@ int main(int argc,char** argv)
rfbGetScreen
(
&
argc
,
argv
,
maxx
,
maxy
,
8
,
3
,
bpp
);
rfbGetScreen
(
&
argc
,
argv
,
maxx
,
maxy
,
8
,
3
,
bpp
);
rfbScreen
->
desktopName
=
"LibVNCServer Example"
;
rfbScreen
->
desktopName
=
"LibVNCServer Example"
;
rfbScreen
->
frameBuffer
=
(
char
*
)
malloc
(
maxx
*
maxy
*
bpp
);
rfbScreen
->
frameBuffer
=
(
char
*
)
malloc
(
maxx
*
maxy
*
bpp
);
rfbScreen
->
rfbA
lwaysShared
=
TRUE
;
rfbScreen
->
a
lwaysShared
=
TRUE
;
rfbScreen
->
ptrAddEvent
=
doptr
;
rfbScreen
->
ptrAddEvent
=
doptr
;
rfbScreen
->
kbdAddEvent
=
dokey
;
rfbScreen
->
kbdAddEvent
=
dokey
;
rfbScreen
->
newClientHook
=
newclient
;
rfbScreen
->
newClientHook
=
newclient
;
...
...
examples/pnmshow.c
View file @
97299606
...
@@ -64,7 +64,7 @@ int main(int argc,char** argv)
...
@@ -64,7 +64,7 @@ int main(int argc,char** argv)
rfbScreen
->
desktopName
=
argv
[
1
];
rfbScreen
->
desktopName
=
argv
[
1
];
else
else
rfbScreen
->
desktopName
=
"Picture"
;
rfbScreen
->
desktopName
=
"Picture"
;
rfbScreen
->
rfbA
lwaysShared
=
TRUE
;
rfbScreen
->
a
lwaysShared
=
TRUE
;
rfbScreen
->
kbdAddEvent
=
HandleKey
;
rfbScreen
->
kbdAddEvent
=
HandleKey
;
/* enable http */
/* enable http */
...
@@ -76,7 +76,7 @@ int main(int argc,char** argv)
...
@@ -76,7 +76,7 @@ int main(int argc,char** argv)
fclose
(
in
);
fclose
(
in
);
if
(
picType
!=
TRUECOLOUR
)
{
if
(
picType
!=
TRUECOLOUR
)
{
rfbScreen
->
rfbS
erverFormat
.
trueColour
=
FALSE
;
rfbScreen
->
s
erverFormat
.
trueColour
=
FALSE
;
rfbScreen
->
colourMap
.
count
=
256
;
rfbScreen
->
colourMap
.
count
=
256
;
rfbScreen
->
colourMap
.
is16
=
FALSE
;
rfbScreen
->
colourMap
.
is16
=
FALSE
;
rfbScreen
->
colourMap
.
data
.
bytes
=
malloc
(
256
*
3
);
rfbScreen
->
colourMap
.
data
.
bytes
=
malloc
(
256
*
3
);
...
...
examples/pnmshow24.c
View file @
97299606
...
@@ -57,7 +57,7 @@ int main(int argc,char** argv)
...
@@ -57,7 +57,7 @@ int main(int argc,char** argv)
rfbScreen
->
desktopName
=
argv
[
1
];
rfbScreen
->
desktopName
=
argv
[
1
];
else
else
rfbScreen
->
desktopName
=
"Picture"
;
rfbScreen
->
desktopName
=
"Picture"
;
rfbScreen
->
rfbA
lwaysShared
=
TRUE
;
rfbScreen
->
a
lwaysShared
=
TRUE
;
rfbScreen
->
kbdAddEvent
=
HandleKey
;
rfbScreen
->
kbdAddEvent
=
HandleKey
;
/* enable http */
/* enable http */
...
...
examples/storepasswd.c
View file @
97299606
...
@@ -36,7 +36,7 @@ int main(int argc, char *argv[])
...
@@ -36,7 +36,7 @@ int main(int argc, char *argv[])
if
(
argc
!=
3
)
if
(
argc
!=
3
)
usage
();
usage
();
if
(
vnc
EncryptAndStorePasswd
(
argv
[
1
],
argv
[
2
])
!=
0
)
{
if
(
rfb
EncryptAndStorePasswd
(
argv
[
1
],
argv
[
2
])
!=
0
)
{
printf
(
"storing password failed.
\n
"
);
printf
(
"storing password failed.
\n
"
);
return
1
;
return
1
;
}
else
{
}
else
{
...
...
examples/vncev.c
View file @
97299606
...
@@ -105,7 +105,7 @@ int main(int argc,char** argv)
...
@@ -105,7 +105,7 @@ int main(int argc,char** argv)
s
->
colourMap
.
is16
=
FALSE
;
s
->
colourMap
.
is16
=
FALSE
;
s
->
colourMap
.
count
=
2
;
s
->
colourMap
.
count
=
2
;
s
->
colourMap
.
data
.
bytes
=
(
unsigned
char
*
)
"
\xd0\xd0\xd0\x30\x01\xe0
"
;
s
->
colourMap
.
data
.
bytes
=
(
unsigned
char
*
)
"
\xd0\xd0\xd0\x30\x01\xe0
"
;
s
->
rfbS
erverFormat
.
trueColour
=
FALSE
;
s
->
s
erverFormat
.
trueColour
=
FALSE
;
s
->
frameBuffer
=
f
;
s
->
frameBuffer
=
f
;
s
->
kbdAddEvent
=
dokey
;
s
->
kbdAddEvent
=
dokey
;
s
->
ptrAddEvent
=
doptr
;
s
->
ptrAddEvent
=
doptr
;
...
...
libvncclient/rfbproto.c
View file @
97299606
...
@@ -246,7 +246,7 @@ ConnectToRFBServer(rfbClient* client,const char *hostname, int port)
...
@@ -246,7 +246,7 @@ ConnectToRFBServer(rfbClient* client,const char *hostname, int port)
return
SetNonBlocking
(
client
->
sock
);
return
SetNonBlocking
(
client
->
sock
);
}
}
static
void
rfbEncryptBytes
(
unsigned
char
*
bytes
,
char
*
passwd
);
extern
void
rfbClientEncryptBytes
(
unsigned
char
*
bytes
,
char
*
passwd
);
/*
/*
* InitialiseRFBConnection.
* InitialiseRFBConnection.
...
@@ -327,7 +327,7 @@ InitialiseRFBConnection(rfbClient* client)
...
@@ -327,7 +327,7 @@ InitialiseRFBConnection(rfbClient* client)
passwd
[
8
]
=
'\0'
;
passwd
[
8
]
=
'\0'
;
}
}
rfbEncryptBytes
(
challenge
,
passwd
);
rfb
Client
EncryptBytes
(
challenge
,
passwd
);
/* Lose the password from memory */
/* Lose the password from memory */
for
(
i
=
strlen
(
passwd
);
i
>=
0
;
i
--
)
{
for
(
i
=
strlen
(
passwd
);
i
>=
0
;
i
--
)
{
...
@@ -1136,14 +1136,14 @@ JpegSetSrcManager(j_decompress_ptr cinfo, uint8_t *compressedData,
...
@@ -1136,14 +1136,14 @@ JpegSetSrcManager(j_decompress_ptr cinfo, uint8_t *compressedData,
/* avoid name clashes with LibVNCServer */
/* avoid name clashes with LibVNCServer */
#define
vncEncryptBytes rfb
EncryptBytes
#define
rfbEncryptBytes rfbClient
EncryptBytes
#define
vncEncryptAndStorePasswd rfb
EncryptAndStorePasswdUnused
#define
rfbEncryptAndStorePasswd rfbClient
EncryptAndStorePasswdUnused
#define
vncDecryptPasswdFromFile rfb
DecryptPasswdFromFileUnused
#define
rfbDecryptPasswdFromFile rfbClient
DecryptPasswdFromFileUnused
#define
vncRandomBytes rfb
RandomBytesUnused
#define
rfbRandomBytes rfbClient
RandomBytesUnused
#define
des rfbDES
#define
rfbDes rfbClientDes
#define
deskey rfbDES
Key
#define
rfbDesKey rfbClientDes
Key
#define
usekey rfb
UseKey
#define
rfbUseKey rfbClient
UseKey
#define
cpkey rfb
CPKey
#define
rfbCPKey rfbClient
CPKey
#include "../libvncserver/vncauth.c"
#include "../libvncserver/vncauth.c"
#include "../libvncserver/d3des.c"
#include "../libvncserver/d3des.c"
libvncserver/auth.c
View file @
97299606
...
@@ -43,9 +43,9 @@ rfbAuthNewClient(cl)
...
@@ -43,9 +43,9 @@ rfbAuthNewClient(cl)
cl
->
state
=
RFB_AUTHENTICATION
;
cl
->
state
=
RFB_AUTHENTICATION
;
if
(
cl
->
screen
->
rfbA
uthPasswdData
&&
!
cl
->
reverseConnection
)
{
if
(
cl
->
screen
->
a
uthPasswdData
&&
!
cl
->
reverseConnection
)
{
*
(
uint32_t
*
)
buf
=
Swap32IfLE
(
rfbVncAuth
);
*
(
uint32_t
*
)
buf
=
Swap32IfLE
(
rfbVncAuth
);
vnc
RandomBytes
(
cl
->
authChallenge
);
rfb
RandomBytes
(
cl
->
authChallenge
);
memcpy
(
&
buf
[
4
],
(
char
*
)
cl
->
authChallenge
,
CHALLENGESIZE
);
memcpy
(
&
buf
[
4
],
(
char
*
)
cl
->
authChallenge
,
CHALLENGESIZE
);
len
=
4
+
CHALLENGESIZE
;
len
=
4
+
CHALLENGESIZE
;
}
else
{
}
else
{
...
@@ -54,7 +54,7 @@ rfbAuthNewClient(cl)
...
@@ -54,7 +54,7 @@ rfbAuthNewClient(cl)
cl
->
state
=
RFB_INITIALISATION
;
cl
->
state
=
RFB_INITIALISATION
;
}
}
if
(
WriteExact
(
cl
,
buf
,
len
)
<
0
)
{
if
(
rfb
WriteExact
(
cl
,
buf
,
len
)
<
0
)
{
rfbLogPerror
(
"rfbAuthNewClient: write"
);
rfbLogPerror
(
"rfbAuthNewClient: write"
);
rfbCloseClient
(
cl
);
rfbCloseClient
(
cl
);
return
;
return
;
...
@@ -75,7 +75,7 @@ rfbAuthProcessClientMessage(cl)
...
@@ -75,7 +75,7 @@ rfbAuthProcessClientMessage(cl)
uint8_t
response
[
CHALLENGESIZE
];
uint8_t
response
[
CHALLENGESIZE
];
uint32_t
authResult
;
uint32_t
authResult
;
if
((
n
=
ReadExact
(
cl
,
(
char
*
)
response
,
CHALLENGESIZE
))
<=
0
)
{
if
((
n
=
rfb
ReadExact
(
cl
,
(
char
*
)
response
,
CHALLENGESIZE
))
<=
0
)
{
if
(
n
!=
0
)
if
(
n
!=
0
)
rfbLogPerror
(
"rfbAuthProcessClientMessage: read"
);
rfbLogPerror
(
"rfbAuthProcessClientMessage: read"
);
rfbCloseClient
(
cl
);
rfbCloseClient
(
cl
);
...
@@ -85,7 +85,7 @@ rfbAuthProcessClientMessage(cl)
...
@@ -85,7 +85,7 @@ rfbAuthProcessClientMessage(cl)
if
(
!
cl
->
screen
->
passwordCheck
(
cl
,(
const
char
*
)
response
,
CHALLENGESIZE
))
{
if
(
!
cl
->
screen
->
passwordCheck
(
cl
,(
const
char
*
)
response
,
CHALLENGESIZE
))
{
rfbErr
(
"rfbAuthProcessClientMessage: password check failed
\n
"
);
rfbErr
(
"rfbAuthProcessClientMessage: password check failed
\n
"
);
authResult
=
Swap32IfLE
(
rfbVncAuthFailed
);
authResult
=
Swap32IfLE
(
rfbVncAuthFailed
);
if
(
WriteExact
(
cl
,
(
char
*
)
&
authResult
,
4
)
<
0
)
{
if
(
rfb
WriteExact
(
cl
,
(
char
*
)
&
authResult
,
4
)
<
0
)
{
rfbLogPerror
(
"rfbAuthProcessClientMessage: write"
);
rfbLogPerror
(
"rfbAuthProcessClientMessage: write"
);
}
}
rfbCloseClient
(
cl
);
rfbCloseClient
(
cl
);
...
@@ -94,7 +94,7 @@ rfbAuthProcessClientMessage(cl)
...
@@ -94,7 +94,7 @@ rfbAuthProcessClientMessage(cl)
authResult
=
Swap32IfLE
(
rfbVncAuthOK
);
authResult
=
Swap32IfLE
(
rfbVncAuthOK
);
if
(
WriteExact
(
cl
,
(
char
*
)
&
authResult
,
4
)
<
0
)
{
if
(
rfb
WriteExact
(
cl
,
(
char
*
)
&
authResult
,
4
)
<
0
)
{
rfbLogPerror
(
"rfbAuthProcessClientMessage: write"
);
rfbLogPerror
(
"rfbAuthProcessClientMessage: write"
);
rfbCloseClient
(
cl
);
rfbCloseClient
(
cl
);
return
;
return
;
...
...
libvncserver/cargs.c
View file @
97299606
...
@@ -64,19 +64,19 @@ rfbProcessArguments(rfbScreenInfoPtr rfbScreen,int* argc, char *argv[])
...
@@ -64,19 +64,19 @@ rfbProcessArguments(rfbScreenInfoPtr rfbScreen,int* argc, char *argv[])
rfbUsage
();
rfbUsage
();
return
FALSE
;
return
FALSE
;
}
}
rfbScreen
->
rfbP
ort
=
atoi
(
argv
[
++
i
]);
rfbScreen
->
p
ort
=
atoi
(
argv
[
++
i
]);
}
else
if
(
strcmp
(
argv
[
i
],
"-rfbwait"
)
==
0
)
{
/* -rfbwait ms */
}
else
if
(
strcmp
(
argv
[
i
],
"-rfbwait"
)
==
0
)
{
/* -rfbwait ms */
if
(
i
+
1
>=
*
argc
)
{
if
(
i
+
1
>=
*
argc
)
{
rfbUsage
();
rfbUsage
();
return
FALSE
;
return
FALSE
;
}
}
rfbScreen
->
rfbM
axClientWait
=
atoi
(
argv
[
++
i
]);
rfbScreen
->
m
axClientWait
=
atoi
(
argv
[
++
i
]);
}
else
if
(
strcmp
(
argv
[
i
],
"-rfbauth"
)
==
0
)
{
/* -rfbauth passwd-file */
}
else
if
(
strcmp
(
argv
[
i
],
"-rfbauth"
)
==
0
)
{
/* -rfbauth passwd-file */
if
(
i
+
1
>=
*
argc
)
{
if
(
i
+
1
>=
*
argc
)
{
rfbUsage
();
rfbUsage
();
return
FALSE
;
return
FALSE
;
}
}
rfbScreen
->
rfbA
uthPasswdData
=
argv
[
++
i
];
rfbScreen
->
a
uthPasswdData
=
argv
[
++
i
];
}
else
if
(
strcmp
(
argv
[
i
],
"-passwd"
)
==
0
)
{
/* -passwd password */
}
else
if
(
strcmp
(
argv
[
i
],
"-passwd"
)
==
0
)
{
/* -passwd password */
char
**
passwds
=
malloc
(
sizeof
(
char
**
)
*
2
);
char
**
passwds
=
malloc
(
sizeof
(
char
**
)
*
2
);
if
(
i
+
1
>=
*
argc
)
{
if
(
i
+
1
>=
*
argc
)
{
...
@@ -85,14 +85,14 @@ rfbProcessArguments(rfbScreenInfoPtr rfbScreen,int* argc, char *argv[])
...
@@ -85,14 +85,14 @@ rfbProcessArguments(rfbScreenInfoPtr rfbScreen,int* argc, char *argv[])
}
}
passwds
[
0
]
=
argv
[
++
i
];
passwds
[
0
]
=
argv
[
++
i
];
passwds
[
1
]
=
0
;
passwds
[
1
]
=
0
;
rfbScreen
->
rfbA
uthPasswdData
=
(
void
*
)
passwds
;
rfbScreen
->
a
uthPasswdData
=
(
void
*
)
passwds
;
rfbScreen
->
passwordCheck
=
rfbCheckPasswordByList
;
rfbScreen
->
passwordCheck
=
rfbCheckPasswordByList
;
}
else
if
(
strcmp
(
argv
[
i
],
"-deferupdate"
)
==
0
)
{
/* -deferupdate milliseconds */
}
else
if
(
strcmp
(
argv
[
i
],
"-deferupdate"
)
==
0
)
{
/* -deferupdate milliseconds */
if
(
i
+
1
>=
*
argc
)
{
if
(
i
+
1
>=
*
argc
)
{
rfbUsage
();
rfbUsage
();
return
FALSE
;
return
FALSE
;
}
}
rfbScreen
->
rfbD
eferUpdateTime
=
atoi
(
argv
[
++
i
]);
rfbScreen
->
d
eferUpdateTime
=
atoi
(
argv
[
++
i
]);
}
else
if
(
strcmp
(
argv
[
i
],
"-desktop"
)
==
0
)
{
/* -desktop desktop-name */
}
else
if
(
strcmp
(
argv
[
i
],
"-desktop"
)
==
0
)
{
/* -desktop desktop-name */
if
(
i
+
1
>=
*
argc
)
{
if
(
i
+
1
>=
*
argc
)
{
rfbUsage
();
rfbUsage
();
...
@@ -100,11 +100,11 @@ rfbProcessArguments(rfbScreenInfoPtr rfbScreen,int* argc, char *argv[])
...
@@ -100,11 +100,11 @@ rfbProcessArguments(rfbScreenInfoPtr rfbScreen,int* argc, char *argv[])
}
}
rfbScreen
->
desktopName
=
argv
[
++
i
];
rfbScreen
->
desktopName
=
argv
[
++
i
];
}
else
if
(
strcmp
(
argv
[
i
],
"-alwaysshared"
)
==
0
)
{
}
else
if
(
strcmp
(
argv
[
i
],
"-alwaysshared"
)
==
0
)
{
rfbScreen
->
rfbA
lwaysShared
=
TRUE
;
rfbScreen
->
a
lwaysShared
=
TRUE
;
}
else
if
(
strcmp
(
argv
[
i
],
"-nevershared"
)
==
0
)
{
}
else
if
(
strcmp
(
argv
[
i
],
"-nevershared"
)
==
0
)
{
rfbScreen
->
rfbN
everShared
=
TRUE
;
rfbScreen
->
n
everShared
=
TRUE
;
}
else
if
(
strcmp
(
argv
[
i
],
"-dontdisconnect"
)
==
0
)
{
}
else
if
(
strcmp
(
argv
[
i
],
"-dontdisconnect"
)
==
0
)
{
rfbScreen
->
rfbD
ontDisconnect
=
TRUE
;
rfbScreen
->
d
ontDisconnect
=
TRUE
;
}
else
if
(
strcmp
(
argv
[
i
],
"-httpdir"
)
==
0
)
{
/* -httpdir directory-path */
}
else
if
(
strcmp
(
argv
[
i
],
"-httpdir"
)
==
0
)
{
/* -httpdir directory-path */
if
(
i
+
1
>=
*
argc
)
{
if
(
i
+
1
>=
*
argc
)
{
rfbUsage
();
rfbUsage
();
...
...
libvncserver/corre.c
View file @
97299606
...
@@ -115,7 +115,7 @@ rfbSendSmallRectEncodingCoRRE(cl, x, y, w, h)
...
@@ -115,7 +115,7 @@ rfbSendSmallRectEncodingCoRRE(cl, x, y, w, h)
rreAfterBuf
=
(
char
*
)
realloc
(
rreAfterBuf
,
rreAfterBufSize
);
rreAfterBuf
=
(
char
*
)
realloc
(
rreAfterBuf
,
rreAfterBufSize
);
}
}
(
*
cl
->
translateFn
)(
cl
->
translateLookupTable
,
&
(
cl
->
screen
->
rfbS
erverFormat
),
(
*
cl
->
translateFn
)(
cl
->
translateLookupTable
,
&
(
cl
->
screen
->
s
erverFormat
),
&
cl
->
format
,
fbptr
,
rreBeforeBuf
,
&
cl
->
format
,
fbptr
,
rreBeforeBuf
,
cl
->
screen
->
paddedWidthInBytes
,
w
,
h
);
cl
->
screen
->
paddedWidthInBytes
,
w
,
h
);
...
@@ -141,8 +141,8 @@ rfbSendSmallRectEncodingCoRRE(cl, x, y, w, h)
...
@@ -141,8 +141,8 @@ rfbSendSmallRectEncodingCoRRE(cl, x, y, w, h)
return
rfbSendRectEncodingRaw
(
cl
,
x
,
y
,
w
,
h
);
return
rfbSendRectEncodingRaw
(
cl
,
x
,
y
,
w
,
h
);
}
}
cl
->
r
fbR
ectanglesSent
[
rfbEncodingCoRRE
]
++
;
cl
->
rectanglesSent
[
rfbEncodingCoRRE
]
++
;
cl
->
rfbB
ytesSent
[
rfbEncodingCoRRE
]
+=
(
sz_rfbFramebufferUpdateRectHeader
cl
->
b
ytesSent
[
rfbEncodingCoRRE
]
+=
(
sz_rfbFramebufferUpdateRectHeader
+
sz_rfbRREHeader
+
rreAfterBufLen
);
+
sz_rfbRREHeader
+
rreAfterBufLen
);
if
(
cl
->
ublen
+
sz_rfbFramebufferUpdateRectHeader
+
sz_rfbRREHeader
if
(
cl
->
ublen
+
sz_rfbFramebufferUpdateRectHeader
+
sz_rfbRREHeader
...
...
libvncserver/cursor.c
View file @
97299606
...
@@ -46,11 +46,11 @@ rfbSendCursorShape(cl)
...
@@ -46,11 +46,11 @@ rfbSendCursorShape(cl)
if
(
cl
->
useRichCursorEncoding
)
{
if
(
cl
->
useRichCursorEncoding
)
{
if
(
pCursor
&&
!
pCursor
->
richSource
)
if
(
pCursor
&&
!
pCursor
->
richSource
)
MakeRichCursorFromXCursor
(
cl
->
screen
,
pCursor
);
rfb
MakeRichCursorFromXCursor
(
cl
->
screen
,
pCursor
);
rect
.
encoding
=
Swap32IfLE
(
rfbEncodingRichCursor
);
rect
.
encoding
=
Swap32IfLE
(
rfbEncodingRichCursor
);
}
else
{
}
else
{
if
(
pCursor
&&
!
pCursor
->
source
)
if
(
pCursor
&&
!
pCursor
->
source
)
MakeXCursorFromRichCursor
(
cl
->
screen
,
pCursor
);
rfb
MakeXCursorFromRichCursor
(
cl
->
screen
,
pCursor
);
rect
.
encoding
=
Swap32IfLE
(
rfbEncodingXCursor
);
rect
.
encoding
=
Swap32IfLE
(
rfbEncodingXCursor
);
}
}
...
@@ -73,8 +73,8 @@ rfbSendCursorShape(cl)
...
@@ -73,8 +73,8 @@ rfbSendCursorShape(cl)
sz_rfbFramebufferUpdateRectHeader
);
sz_rfbFramebufferUpdateRectHeader
);
cl
->
ublen
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
ublen
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
rfbC
ursorShapeBytesSent
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
c
ursorShapeBytesSent
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
rfbC
ursorShapeUpdatesSent
++
;
cl
->
c
ursorShapeUpdatesSent
++
;
if
(
!
rfbSendUpdateBuf
(
cl
))
if
(
!
rfbSendUpdateBuf
(
cl
))
return
FALSE
;
return
FALSE
;
...
@@ -139,10 +139,10 @@ rfbSendCursorShape(cl)
...
@@ -139,10 +139,10 @@ rfbSendCursorShape(cl)
}
}
}
else
{
}
else
{
/* RichCursor encoding. */
/* RichCursor encoding. */
int
bpp1
=
cl
->
screen
->
rfbS
erverFormat
.
bitsPerPixel
/
8
,
int
bpp1
=
cl
->
screen
->
s
erverFormat
.
bitsPerPixel
/
8
,
bpp2
=
cl
->
format
.
bitsPerPixel
/
8
;
bpp2
=
cl
->
format
.
bitsPerPixel
/
8
;
(
*
cl
->
translateFn
)(
cl
->
translateLookupTable
,
(
*
cl
->
translateFn
)(
cl
->
translateLookupTable
,
&
(
cl
->
screen
->
rfbS
erverFormat
),
&
(
cl
->
screen
->
s
erverFormat
),
&
cl
->
format
,
(
char
*
)
pCursor
->
richSource
,
&
cl
->
format
,
(
char
*
)
pCursor
->
richSource
,
&
cl
->
updateBuf
[
cl
->
ublen
],
&
cl
->
updateBuf
[
cl
->
ublen
],
pCursor
->
width
*
bpp1
,
pCursor
->
width
,
pCursor
->
height
);
pCursor
->
width
*
bpp1
,
pCursor
->
width
,
pCursor
->
height
);
...
@@ -163,8 +163,8 @@ rfbSendCursorShape(cl)
...
@@ -163,8 +163,8 @@ rfbSendCursorShape(cl)
/* Send everything we have prepared in the cl->updateBuf[]. */
/* Send everything we have prepared in the cl->updateBuf[]. */
cl
->
rfbC
ursorShapeBytesSent
+=
(
cl
->
ublen
-
saved_ublen
);
cl
->
c
ursorShapeBytesSent
+=
(
cl
->
ublen
-
saved_ublen
);
cl
->
rfbC
ursorShapeUpdatesSent
++
;
cl
->
c
ursorShapeUpdatesSent
++
;
if
(
!
rfbSendUpdateBuf
(
cl
))
if
(
!
rfbSendUpdateBuf
(
cl
))
return
FALSE
;
return
FALSE
;
...
@@ -196,8 +196,8 @@ rfbSendCursorPos(rfbClientPtr cl)
...
@@ -196,8 +196,8 @@ rfbSendCursorPos(rfbClientPtr cl)
sz_rfbFramebufferUpdateRectHeader
);
sz_rfbFramebufferUpdateRectHeader
);
cl
->
ublen
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
ublen
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
rfbC
ursorPosBytesSent
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
c
ursorPosBytesSent
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
rfbC
ursorPosUpdatesSent
++
;
cl
->
c
ursorPosUpdatesSent
++
;
if
(
!
rfbSendUpdateBuf
(
cl
))
if
(
!
rfbSendUpdateBuf
(
cl
))
return
FALSE
;
return
FALSE
;
...
@@ -326,9 +326,9 @@ void rfbFreeCursor(rfbCursorPtr cursor)
...
@@ -326,9 +326,9 @@ void rfbFreeCursor(rfbCursorPtr cursor)
}
}
/* background and foregroud colour have to be set beforehand */
/* background and foregroud colour have to be set beforehand */
void
MakeXCursorFromRichCursor
(
rfbScreenInfoPtr
rfbScreen
,
rfbCursorPtr
cursor
)
void
rfb
MakeXCursorFromRichCursor
(
rfbScreenInfoPtr
rfbScreen
,
rfbCursorPtr
cursor
)
{
{
rfbPixelFormat
*
format
=&
rfbScreen
->
rfbS
erverFormat
;
rfbPixelFormat
*
format
=&
rfbScreen
->
s
erverFormat
;
int
i
,
j
,
w
=
(
cursor
->
width
+
7
)
/
8
,
bpp
=
format
->
bitsPerPixel
/
8
,
int
i
,
j
,
w
=
(
cursor
->
width
+
7
)
/
8
,
bpp
=
format
->
bitsPerPixel
/
8
,
width
=
cursor
->
width
*
bpp
;
width
=
cursor
->
width
*
bpp
;
uint32_t
background
;
uint32_t
background
;
...
@@ -352,9 +352,9 @@ void MakeXCursorFromRichCursor(rfbScreenInfoPtr rfbScreen,rfbCursorPtr cursor)
...
@@ -352,9 +352,9 @@ void MakeXCursorFromRichCursor(rfbScreenInfoPtr rfbScreen,rfbCursorPtr cursor)
cursor
->
source
[
j
*
w
+
i
/
8
]
|=
bit
;
cursor
->
source
[
j
*
w
+
i
/
8
]
|=
bit
;
}
}
void
MakeRichCursorFromXCursor
(
rfbScreenInfoPtr
rfbScreen
,
rfbCursorPtr
cursor
)
void
rfb
MakeRichCursorFromXCursor
(
rfbScreenInfoPtr
rfbScreen
,
rfbCursorPtr
cursor
)
{
{
rfbPixelFormat
*
format
=&
rfbScreen
->
rfbS
erverFormat
;
rfbPixelFormat
*
format
=&
rfbScreen
->
s
erverFormat
;
int
i
,
j
,
w
=
(
cursor
->
width
+
7
)
/
8
,
bpp
=
format
->
bitsPerPixel
/
8
;
int
i
,
j
,
w
=
(
cursor
->
width
+
7
)
/
8
,
bpp
=
format
->
bitsPerPixel
/
8
;
uint32_t
background
,
foreground
;
uint32_t
background
,
foreground
;
char
*
back
=
(
char
*
)
&
background
,
*
fore
=
(
char
*
)
&
foreground
;
char
*
back
=
(
char
*
)
&
background
,
*
fore
=
(
char
*
)
&
foreground
;
...
@@ -387,7 +387,7 @@ void MakeRichCursorFromXCursor(rfbScreenInfoPtr rfbScreen,rfbCursorPtr cursor)
...
@@ -387,7 +387,7 @@ void MakeRichCursorFromXCursor(rfbScreenInfoPtr rfbScreen,rfbCursorPtr cursor)
void
rfbUndrawCursor
(
rfbScreenInfoPtr
s
)
void
rfbUndrawCursor
(
rfbScreenInfoPtr
s
)
{
{
rfbCursorPtr
c
=
s
->
cursor
;
rfbCursorPtr
c
=
s
->
cursor
;
int
j
,
x1
,
x2
,
y1
,
y2
,
bpp
=
s
->
rfbS
erverFormat
.
bitsPerPixel
/
8
,
int
j
,
x1
,
x2
,
y1
,
y2
,
bpp
=
s
->
s
erverFormat
.
bitsPerPixel
/
8
,
rowstride
=
s
->
paddedWidthInBytes
;
rowstride
=
s
->
paddedWidthInBytes
;
LOCK
(
s
->
cursorMutex
);
LOCK
(
s
->
cursorMutex
);
if
(
!
s
->
cursorIsDrawn
||
!
c
)
{
if
(
!
s
->
cursorIsDrawn
||
!
c
)
{
...
@@ -429,7 +429,7 @@ void rfbUndrawCursor(rfbScreenInfoPtr s)
...
@@ -429,7 +429,7 @@ void rfbUndrawCursor(rfbScreenInfoPtr s)
void
rfbDrawCursor
(
rfbScreenInfoPtr
s
)
void
rfbDrawCursor
(
rfbScreenInfoPtr
s
)
{
{
rfbCursorPtr
c
=
s
->
cursor
;
rfbCursorPtr
c
=
s
->
cursor
;
int
i
,
j
,
x1
,
x2
,
y1
,
y2
,
i1
,
j1
,
bpp
=
s
->
rfbS
erverFormat
.
bitsPerPixel
/
8
,
int
i
,
j
,
x1
,
x2
,
y1
,
y2
,
i1
,
j1
,
bpp
=
s
->
s
erverFormat
.
bitsPerPixel
/
8
,
rowstride
=
s
->
paddedWidthInBytes
,
rowstride
=
s
->
paddedWidthInBytes
,
bufSize
,
w
;
bufSize
,
w
;
rfbBool
wasChanged
=
FALSE
;
rfbBool
wasChanged
=
FALSE
;
...
@@ -487,7 +487,7 @@ void rfbDrawCursor(rfbScreenInfoPtr s)
...
@@ -487,7 +487,7 @@ void rfbDrawCursor(rfbScreenInfoPtr s)
}
}
if
(
!
c
->
richSource
)
if
(
!
c
->
richSource
)
MakeRichCursorFromXCursor
(
s
,
c
);
rfb
MakeRichCursorFromXCursor
(
s
,
c
);
/* now the cursor has to be drawn */
/* now the cursor has to be drawn */
for
(
j
=
0
;
j
<
y2
;
j
++
)
for
(
j
=
0
;
j
<
y2
;
j
++
)
...
...
libvncserver/d3des.c
View file @
97299606
...
@@ -71,7 +71,7 @@ static unsigned char pc2[48] = {
...
@@ -71,7 +71,7 @@ static unsigned char pc2[48] = {
40
,
51
,
30
,
36
,
46
,
54
,
29
,
39
,
50
,
44
,
32
,
47
,
40
,
51
,
30
,
36
,
46
,
54
,
29
,
39
,
50
,
44
,
32
,
47
,
43
,
48
,
38
,
55
,
33
,
52
,
45
,
41
,
49
,
35
,
28
,
31
};
43
,
48
,
38
,
55
,
33
,
52
,
45
,
41
,
49
,
35
,
28
,
31
};
void
desk
ey
(
key
,
edf
)
/* Thanks to James Gillogly & Phil Karn! */
void
rfbDesK
ey
(
key
,
edf
)
/* Thanks to James Gillogly & Phil Karn! */
unsigned
char
*
key
;
unsigned
char
*
key
;
int
edf
;
int
edf
;
{
{
...
@@ -127,11 +127,11 @@ register unsigned long *raw1;
...
@@ -127,11 +127,11 @@ register unsigned long *raw1;
*
cook
|=
(
*
raw1
&
0x0003f000L
)
>>
4
;
*
cook
|=
(
*
raw1
&
0x0003f000L
)
>>
4
;
*
cook
++
|=
(
*
raw1
&
0x0000003fL
);
*
cook
++
|=
(
*
raw1
&
0x0000003fL
);
}
}
usek
ey
(
dough
);
rfbUseK
ey
(
dough
);
return
;
return
;
}
}
void
cpk
ey
(
into
)
void
rfbCPK
ey
(
into
)
register
unsigned
long
*
into
;
register
unsigned
long
*
into
;
{
{
register
unsigned
long
*
from
,
*
endp
;
register
unsigned
long
*
from
,
*
endp
;
...
@@ -141,7 +141,7 @@ register unsigned long *into;
...
@@ -141,7 +141,7 @@ register unsigned long *into;
return
;
return
;
}
}
void
usek
ey
(
from
)
void
rfbUseK
ey
(
from
)
register
unsigned
long
*
from
;
register
unsigned
long
*
from
;
{
{
register
unsigned
long
*
to
,
*
endp
;
register
unsigned
long
*
to
,
*
endp
;
...
@@ -151,7 +151,7 @@ register unsigned long *from;
...
@@ -151,7 +151,7 @@ register unsigned long *from;
return
;
return
;
}
}
void
d
es
(
inblock
,
outblock
)
void
rfbD
es
(
inblock
,
outblock
)
unsigned
char
*
inblock
,
*
outblock
;
unsigned
char
*
inblock
,
*
outblock
;
{
{
unsigned
long
work
[
2
];
unsigned
long
work
[
2
];
...
...
libvncserver/d3des.h
View file @
97299606
...
@@ -25,25 +25,25 @@
...
@@ -25,25 +25,25 @@
#define EN0 0
/* MODE == encrypt */
#define EN0 0
/* MODE == encrypt */
#define DE1 1
/* MODE == decrypt */
#define DE1 1
/* MODE == decrypt */
extern
void
desk
ey
(
unsigned
char
*
,
int
);
extern
void
rfbDesK
ey
(
unsigned
char
*
,
int
);
/* hexkey[8] MODE
/* hexkey[8] MODE
* Sets the internal key register according to the hexadecimal
* Sets the internal key register according to the hexadecimal
* key contained in the 8 bytes of hexkey, according to the DES,
* key contained in the 8 bytes of hexkey, according to the DES,
* for encryption or decryption according to MODE.
* for encryption or decryption according to MODE.
*/
*/
extern
void
usek
ey
(
unsigned
long
*
);
extern
void
rfbUseK
ey
(
unsigned
long
*
);
/* cookedkey[32]
/* cookedkey[32]
* Loads the internal key register with the data in cookedkey.
* Loads the internal key register with the data in cookedkey.
*/
*/
extern
void
cpk
ey
(
unsigned
long
*
);
extern
void
rfbCPK
ey
(
unsigned
long
*
);
/* cookedkey[32]
/* cookedkey[32]
* Copies the contents of the internal key register into the storage
* Copies the contents of the internal key register into the storage
* located at &cookedkey[0].
* located at &cookedkey[0].
*/
*/
extern
void
d
es
(
unsigned
char
*
,
unsigned
char
*
);
extern
void
rfbD
es
(
unsigned
char
*
,
unsigned
char
*
);
/* from[8] to[8]
/* from[8] to[8]
* Encrypts/Decrypts (according to the key currently loaded in the
* Encrypts/Decrypts (according to the key currently loaded in the
* internal key register) one block of eight bytes at address 'from'
* internal key register) one block of eight bytes at address 'from'
...
...
libvncserver/font.c
View file @
97299606
...
@@ -7,7 +7,7 @@ int rfbDrawChar(rfbScreenInfoPtr rfbScreen,rfbFontDataPtr font,
...
@@ -7,7 +7,7 @@ int rfbDrawChar(rfbScreenInfoPtr rfbScreen,rfbFontDataPtr font,
unsigned
char
*
data
=
font
->
data
+
font
->
metaData
[
c
*
5
];
unsigned
char
*
data
=
font
->
data
+
font
->
metaData
[
c
*
5
];
unsigned
char
d
=*
data
;
unsigned
char
d
=*
data
;
int
rowstride
=
rfbScreen
->
paddedWidthInBytes
;
int
rowstride
=
rfbScreen
->
paddedWidthInBytes
;
int
bpp
=
rfbScreen
->
rfbS
erverFormat
.
bitsPerPixel
/
8
;
int
bpp
=
rfbScreen
->
s
erverFormat
.
bitsPerPixel
/
8
;
char
*
colour
=
(
char
*
)
&
col
;
char
*
colour
=
(
char
*
)
&
col
;
if
(
!
rfbEndianTest
)
if
(
!
rfbEndianTest
)
...
@@ -52,7 +52,7 @@ int rfbDrawCharWithClip(rfbScreenInfoPtr rfbScreen,rfbFontDataPtr font,
...
@@ -52,7 +52,7 @@ int rfbDrawCharWithClip(rfbScreenInfoPtr rfbScreen,rfbFontDataPtr font,
unsigned
char
*
data
=
font
->
data
+
font
->
metaData
[
c
*
5
];
unsigned
char
*
data
=
font
->
data
+
font
->
metaData
[
c
*
5
];
unsigned
char
d
;
unsigned
char
d
;
int
rowstride
=
rfbScreen
->
paddedWidthInBytes
;
int
rowstride
=
rfbScreen
->
paddedWidthInBytes
;
int
bpp
=
rfbScreen
->
rfbS
erverFormat
.
bitsPerPixel
/
8
,
extra_bytes
=
0
;
int
bpp
=
rfbScreen
->
s
erverFormat
.
bitsPerPixel
/
8
,
extra_bytes
=
0
;
char
*
colour
=
(
char
*
)
&
col
;
char
*
colour
=
(
char
*
)
&
col
;
char
*
bcolour
=
(
char
*
)
&
bcol
;
char
*
bcolour
=
(
char
*
)
&
bcol
;
...
...
libvncserver/hextile.c
View file @
97299606
...
@@ -58,8 +58,8 @@ rfbSendRectEncodingHextile(cl, x, y, w, h)
...
@@ -58,8 +58,8 @@ rfbSendRectEncodingHextile(cl, x, y, w, h)
sz_rfbFramebufferUpdateRectHeader
);
sz_rfbFramebufferUpdateRectHeader
);
cl
->
ublen
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
ublen
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
r
fbR
ectanglesSent
[
rfbEncodingHextile
]
++
;
cl
->
rectanglesSent
[
rfbEncodingHextile
]
++
;
cl
->
rfbB
ytesSent
[
rfbEncodingHextile
]
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
b
ytesSent
[
rfbEncodingHextile
]
+=
sz_rfbFramebufferUpdateRectHeader
;
switch
(
cl
->
format
.
bitsPerPixel
)
{
switch
(
cl
->
format
.
bitsPerPixel
)
{
case
8
:
case
8
:
...
@@ -130,7 +130,7 @@ sendHextiles##bpp(cl, rx, ry, rw, rh)
...
@@ -130,7 +130,7 @@ sendHextiles##bpp(cl, rx, ry, rw, rh)
fbptr = (cl->screen->frameBuffer + (cl->screen->paddedWidthInBytes * y) \
fbptr = (cl->screen->frameBuffer + (cl->screen->paddedWidthInBytes * y) \
+ (x * (cl->screen->bitsPerPixel / 8))); \
+ (x * (cl->screen->bitsPerPixel / 8))); \
\
\
(*cl->translateFn)(cl->translateLookupTable, &(cl->screen->
rfbS
erverFormat), \
(*cl->translateFn)(cl->translateLookupTable, &(cl->screen->
s
erverFormat), \
&cl->format, fbptr, (char *)clientPixelData, \
&cl->format, fbptr, (char *)clientPixelData, \
cl->screen->paddedWidthInBytes, w, h); \
cl->screen->paddedWidthInBytes, w, h); \
\
\
...
@@ -149,7 +149,7 @@ sendHextiles##bpp(cl, rx, ry, rw, rh)
...
@@ -149,7 +149,7 @@ sendHextiles##bpp(cl, rx, ry, rw, rh)
} \
} \
\
\
if (solid) { \
if (solid) { \
cl->
rfbB
ytesSent[rfbEncodingHextile] += cl->ublen - startUblen; \
cl->
b
ytesSent[rfbEncodingHextile] += cl->ublen - startUblen; \
continue; \
continue; \
} \
} \
\
\
...
@@ -174,7 +174,7 @@ sendHextiles##bpp(cl, rx, ry, rw, rh)
...
@@ -174,7 +174,7 @@ sendHextiles##bpp(cl, rx, ry, rw, rh)
cl->ublen = startUblen; \
cl->ublen = startUblen; \
cl->updateBuf[cl->ublen++] = rfbHextileRaw; \
cl->updateBuf[cl->ublen++] = rfbHextileRaw; \
(*cl->translateFn)(cl->translateLookupTable, \
(*cl->translateFn)(cl->translateLookupTable, \
&(cl->screen->
rfbS
erverFormat), &cl->format, fbptr, \
&(cl->screen->
s
erverFormat), &cl->format, fbptr, \
(char *)clientPixelData, \
(char *)clientPixelData, \
cl->screen->paddedWidthInBytes, w, h); \
cl->screen->paddedWidthInBytes, w, h); \
\
\
...
@@ -184,7 +184,7 @@ sendHextiles##bpp(cl, rx, ry, rw, rh)
...
@@ -184,7 +184,7 @@ sendHextiles##bpp(cl, rx, ry, rw, rh)
cl->ublen += w * h * (bpp/8); \
cl->ublen += w * h * (bpp/8); \
} \
} \
\
\
cl->
rfbB
ytesSent[rfbEncodingHextile] += cl->ublen - startUblen; \
cl->
b
ytesSent[rfbEncodingHextile] += cl->ublen - startUblen; \
} \
} \
} \
} \
\
\
...
...
libvncserver/httpd.c
View file @
97299606
...
@@ -84,7 +84,7 @@ static size_t buf_filled=0;
...
@@ -84,7 +84,7 @@ static size_t buf_filled=0;
*/
*/
void
void
h
ttpInitSockets
(
rfbScreenInfoPtr
rfbScreen
)
rfbH
ttpInitSockets
(
rfbScreenInfoPtr
rfbScreen
)
{
{
if
(
rfbScreen
->
httpInitDone
)
if
(
rfbScreen
->
httpInitDone
)
return
;
return
;
...
@@ -95,14 +95,14 @@ httpInitSockets(rfbScreenInfoPtr rfbScreen)
...
@@ -95,14 +95,14 @@ httpInitSockets(rfbScreenInfoPtr rfbScreen)
return
;
return
;
if
(
rfbScreen
->
httpPort
==
0
)
{
if
(
rfbScreen
->
httpPort
==
0
)
{
rfbScreen
->
httpPort
=
rfbScreen
->
rfbP
ort
-
100
;
rfbScreen
->
httpPort
=
rfbScreen
->
p
ort
-
100
;
}
}
rfbLog
(
"Listening for HTTP connections on TCP port %d
\n
"
,
rfbScreen
->
httpPort
);
rfbLog
(
"Listening for HTTP connections on TCP port %d
\n
"
,
rfbScreen
->
httpPort
);
rfbLog
(
" URL http://%s:%d
\n
"
,
rfbScreen
->
rfbT
hisHost
,
rfbScreen
->
httpPort
);
rfbLog
(
" URL http://%s:%d
\n
"
,
rfbScreen
->
t
hisHost
,
rfbScreen
->
httpPort
);
if
((
rfbScreen
->
httpListenSock
=
ListenOnTCPPort
(
rfbScreen
->
httpPort
))
<
0
)
{
if
((
rfbScreen
->
httpListenSock
=
rfb
ListenOnTCPPort
(
rfbScreen
->
httpPort
))
<
0
)
{
rfbLogPerror
(
"ListenOnTCPPort"
);
rfbLogPerror
(
"ListenOnTCPPort"
);
return
;
return
;
}
}
...
@@ -117,7 +117,7 @@ httpInitSockets(rfbScreenInfoPtr rfbScreen)
...
@@ -117,7 +117,7 @@ httpInitSockets(rfbScreenInfoPtr rfbScreen)
*/
*/
void
void
h
ttpCheckFds
(
rfbScreenInfoPtr
rfbScreen
)
rfbH
ttpCheckFds
(
rfbScreenInfoPtr
rfbScreen
)
{
{
int
nfds
;
int
nfds
;
fd_set
fds
;
fd_set
fds
;
...
@@ -274,15 +274,15 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen)
...
@@ -274,15 +274,15 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen)
if
(
rfbScreen
->
httpEnableProxyConnect
)
{
if
(
rfbScreen
->
httpEnableProxyConnect
)
{
const
static
char
*
PROXY_OK_STR
=
"HTTP/1.0 200 OK
\r\n
Content-Type: octet-stream
\r\n
Pragma: no-cache
\r\n\r\n
"
;
const
static
char
*
PROXY_OK_STR
=
"HTTP/1.0 200 OK
\r\n
Content-Type: octet-stream
\r\n
Pragma: no-cache
\r\n\r\n
"
;
if
(
!
strncmp
(
buf
,
"CONNECT "
,
8
))
{
if
(
!
strncmp
(
buf
,
"CONNECT "
,
8
))
{
if
(
atoi
(
strchr
(
buf
,
':'
)
+
1
)
!=
rfbScreen
->
rfbP
ort
)
{
if
(
atoi
(
strchr
(
buf
,
':'
)
+
1
)
!=
rfbScreen
->
p
ort
)
{
rfbErr
(
"httpd: CONNECT format invalid.
\n
"
);
rfbErr
(
"httpd: CONNECT format invalid.
\n
"
);
WriteExact
(
&
cl
,
INVALID_REQUEST_STR
,
strlen
(
INVALID_REQUEST_STR
));
rfb
WriteExact
(
&
cl
,
INVALID_REQUEST_STR
,
strlen
(
INVALID_REQUEST_STR
));
httpCloseSock
(
rfbScreen
);
httpCloseSock
(
rfbScreen
);
return
;
return
;
}
}
/* proxy connection */
/* proxy connection */
rfbLog
(
"httpd: client asked for CONNECT
\n
"
);
rfbLog
(
"httpd: client asked for CONNECT
\n
"
);
WriteExact
(
&
cl
,
PROXY_OK_STR
,
strlen
(
PROXY_OK_STR
));
rfb
WriteExact
(
&
cl
,
PROXY_OK_STR
,
strlen
(
PROXY_OK_STR
));
rfbNewClientConnection
(
rfbScreen
,
rfbScreen
->
httpSock
);
rfbNewClientConnection
(
rfbScreen
,
rfbScreen
->
httpSock
);
rfbScreen
->
httpSock
=
-
1
;
rfbScreen
->
httpSock
=
-
1
;
return
;
return
;
...
@@ -290,7 +290,7 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen)
...
@@ -290,7 +290,7 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen)
if
(
!
strncmp
(
buf
,
"GET "
,
4
)
&&
!
strncmp
(
strchr
(
buf
,
'/'
),
"/proxied.connection HTTP/1."
,
27
))
{
if
(
!
strncmp
(
buf
,
"GET "
,
4
)
&&
!
strncmp
(
strchr
(
buf
,
'/'
),
"/proxied.connection HTTP/1."
,
27
))
{
/* proxy connection */
/* proxy connection */
rfbLog
(
"httpd: client asked for /proxied.connection
\n
"
);
rfbLog
(
"httpd: client asked for /proxied.connection
\n
"
);
WriteExact
(
&
cl
,
PROXY_OK_STR
,
strlen
(
PROXY_OK_STR
));
rfb
WriteExact
(
&
cl
,
PROXY_OK_STR
,
strlen
(
PROXY_OK_STR
));
rfbNewClientConnection
(
rfbScreen
,
rfbScreen
->
httpSock
);
rfbNewClientConnection
(
rfbScreen
,
rfbScreen
->
httpSock
);
rfbScreen
->
httpSock
=
-
1
;
rfbScreen
->
httpSock
=
-
1
;
return
;
return
;
...
@@ -320,14 +320,14 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen)
...
@@ -320,14 +320,14 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen)
if
(
fname
[
0
]
!=
'/'
)
{
if
(
fname
[
0
]
!=
'/'
)
{
rfbErr
(
"httpd: filename didn't begin with '/'
\n
"
);
rfbErr
(
"httpd: filename didn't begin with '/'
\n
"
);
WriteExact
(
&
cl
,
NOT_FOUND_STR
,
strlen
(
NOT_FOUND_STR
));
rfb
WriteExact
(
&
cl
,
NOT_FOUND_STR
,
strlen
(
NOT_FOUND_STR
));
httpCloseSock
(
rfbScreen
);
httpCloseSock
(
rfbScreen
);
return
;
return
;
}
}
if
(
strchr
(
fname
+
1
,
'/'
)
!=
NULL
)
{
if
(
strchr
(
fname
+
1
,
'/'
)
!=
NULL
)
{
rfbErr
(
"httpd: asking for file in other directory
\n
"
);
rfbErr
(
"httpd: asking for file in other directory
\n
"
);
WriteExact
(
&
cl
,
NOT_FOUND_STR
,
strlen
(
NOT_FOUND_STR
));
rfb
WriteExact
(
&
cl
,
NOT_FOUND_STR
,
strlen
(
NOT_FOUND_STR
));
httpCloseSock
(
rfbScreen
);
httpCloseSock
(
rfbScreen
);
return
;
return
;
}
}
...
@@ -366,12 +366,12 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen)
...
@@ -366,12 +366,12 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen)
if
((
fd
=
fopen
(
fullFname
,
"r"
))
==
0
)
{
if
((
fd
=
fopen
(
fullFname
,
"r"
))
==
0
)
{
rfbLogPerror
(
"httpProcessInput: open"
);
rfbLogPerror
(
"httpProcessInput: open"
);
WriteExact
(
&
cl
,
NOT_FOUND_STR
,
strlen
(
NOT_FOUND_STR
));
rfb
WriteExact
(
&
cl
,
NOT_FOUND_STR
,
strlen
(
NOT_FOUND_STR
));
httpCloseSock
(
rfbScreen
);
httpCloseSock
(
rfbScreen
);
return
;
return
;
}
}
WriteExact
(
&
cl
,
OK_STR
,
strlen
(
OK_STR
));
rfb
WriteExact
(
&
cl
,
OK_STR
,
strlen
(
OK_STR
));
while
(
1
)
{
while
(
1
)
{
int
n
=
fread
(
buf
,
1
,
BUF_SIZE
-
1
,
fd
);
int
n
=
fread
(
buf
,
1
,
BUF_SIZE
-
1
,
fd
);
...
@@ -397,74 +397,74 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen)
...
@@ -397,74 +397,74 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen)
buf
[
n
]
=
0
;
/* make sure it's null-terminated */
buf
[
n
]
=
0
;
/* make sure it's null-terminated */
while
((
dollar
=
strchr
(
ptr
,
'$'
))
!=
NULL
)
{
while
((
dollar
=
strchr
(
ptr
,
'$'
))
!=
NULL
)
{
WriteExact
(
&
cl
,
ptr
,
(
dollar
-
ptr
));
rfb
WriteExact
(
&
cl
,
ptr
,
(
dollar
-
ptr
));
ptr
=
dollar
;
ptr
=
dollar
;
if
(
compareAndSkip
(
&
ptr
,
"$WIDTH"
))
{
if
(
compareAndSkip
(
&
ptr
,
"$WIDTH"
))
{
sprintf
(
str
,
"%d"
,
rfbScreen
->
width
);
sprintf
(
str
,
"%d"
,
rfbScreen
->
width
);
WriteExact
(
&
cl
,
str
,
strlen
(
str
));
rfb
WriteExact
(
&
cl
,
str
,
strlen
(
str
));
}
else
if
(
compareAndSkip
(
&
ptr
,
"$HEIGHT"
))
{
}
else
if
(
compareAndSkip
(
&
ptr
,
"$HEIGHT"
))
{
sprintf
(
str
,
"%d"
,
rfbScreen
->
height
);
sprintf
(
str
,
"%d"
,
rfbScreen
->
height
);
WriteExact
(
&
cl
,
str
,
strlen
(
str
));
rfb
WriteExact
(
&
cl
,
str
,
strlen
(
str
));
}
else
if
(
compareAndSkip
(
&
ptr
,
"$APPLETWIDTH"
))
{
}
else
if
(
compareAndSkip
(
&
ptr
,
"$APPLETWIDTH"
))
{
sprintf
(
str
,
"%d"
,
rfbScreen
->
width
);
sprintf
(
str
,
"%d"
,
rfbScreen
->
width
);
WriteExact
(
&
cl
,
str
,
strlen
(
str
));
rfb
WriteExact
(
&
cl
,
str
,
strlen
(
str
));
}
else
if
(
compareAndSkip
(
&
ptr
,
"$APPLETHEIGHT"
))
{
}
else
if
(
compareAndSkip
(
&
ptr
,
"$APPLETHEIGHT"
))
{
sprintf
(
str
,
"%d"
,
rfbScreen
->
height
+
32
);
sprintf
(
str
,
"%d"
,
rfbScreen
->
height
+
32
);
WriteExact
(
&
cl
,
str
,
strlen
(
str
));
rfb
WriteExact
(
&
cl
,
str
,
strlen
(
str
));
}
else
if
(
compareAndSkip
(
&
ptr
,
"$PORT"
))
{
}
else
if
(
compareAndSkip
(
&
ptr
,
"$PORT"
))
{
sprintf
(
str
,
"%d"
,
rfbScreen
->
rfbP
ort
);
sprintf
(
str
,
"%d"
,
rfbScreen
->
p
ort
);
WriteExact
(
&
cl
,
str
,
strlen
(
str
));
rfb
WriteExact
(
&
cl
,
str
,
strlen
(
str
));
}
else
if
(
compareAndSkip
(
&
ptr
,
"$DESKTOP"
))
{
}
else
if
(
compareAndSkip
(
&
ptr
,
"$DESKTOP"
))
{
WriteExact
(
&
cl
,
rfbScreen
->
desktopName
,
strlen
(
rfbScreen
->
desktopName
));
rfb
WriteExact
(
&
cl
,
rfbScreen
->
desktopName
,
strlen
(
rfbScreen
->
desktopName
));
}
else
if
(
compareAndSkip
(
&
ptr
,
"$DISPLAY"
))
{
}
else
if
(
compareAndSkip
(
&
ptr
,
"$DISPLAY"
))
{
sprintf
(
str
,
"%s:%d"
,
rfbScreen
->
rfbThisHost
,
rfbScreen
->
rfbP
ort
-
5900
);
sprintf
(
str
,
"%s:%d"
,
rfbScreen
->
thisHost
,
rfbScreen
->
p
ort
-
5900
);
WriteExact
(
&
cl
,
str
,
strlen
(
str
));
rfb
WriteExact
(
&
cl
,
str
,
strlen
(
str
));
}
else
if
(
compareAndSkip
(
&
ptr
,
"$USER"
))
{
}
else
if
(
compareAndSkip
(
&
ptr
,
"$USER"
))
{
#ifndef WIN32
#ifndef WIN32
if
(
user
)
{
if
(
user
)
{
WriteExact
(
&
cl
,
user
,
rfb
WriteExact
(
&
cl
,
user
,
strlen
(
user
));
strlen
(
user
));
}
else
}
else
#endif
#endif
WriteExact
(
&
cl
,
"?"
,
1
);
rfb
WriteExact
(
&
cl
,
"?"
,
1
);
}
else
if
(
compareAndSkip
(
&
ptr
,
"$PARAMS"
))
{
}
else
if
(
compareAndSkip
(
&
ptr
,
"$PARAMS"
))
{
if
(
params
[
0
]
!=
'\0'
)
if
(
params
[
0
]
!=
'\0'
)
WriteExact
(
&
cl
,
params
,
strlen
(
params
));
rfb
WriteExact
(
&
cl
,
params
,
strlen
(
params
));
}
else
{
}
else
{
if
(
!
compareAndSkip
(
&
ptr
,
"$$"
))
if
(
!
compareAndSkip
(
&
ptr
,
"$$"
))
ptr
++
;
ptr
++
;
if
(
WriteExact
(
&
cl
,
"$"
,
1
)
<
0
)
{
if
(
rfb
WriteExact
(
&
cl
,
"$"
,
1
)
<
0
)
{
fclose
(
fd
);
fclose
(
fd
);
httpCloseSock
(
rfbScreen
);
httpCloseSock
(
rfbScreen
);
return
;
return
;
}
}
}
}
}
}
if
(
WriteExact
(
&
cl
,
ptr
,
(
&
buf
[
n
]
-
ptr
))
<
0
)
if
(
rfb
WriteExact
(
&
cl
,
ptr
,
(
&
buf
[
n
]
-
ptr
))
<
0
)
break
;
break
;
}
else
{
}
else
{
/* For files not ending .vnc, just write out the buffer */
/* For files not ending .vnc, just write out the buffer */
if
(
WriteExact
(
&
cl
,
buf
,
n
)
<
0
)
if
(
rfb
WriteExact
(
&
cl
,
buf
,
n
)
<
0
)
break
;
break
;
}
}
}
}
...
...
libvncserver/main.c
View file @
97299606
...
@@ -159,22 +159,22 @@ void rfbScheduleCopyRegion(rfbScreenInfoPtr rfbScreen,sraRegionPtr copyRegion,in
...
@@ -159,22 +159,22 @@ void rfbScheduleCopyRegion(rfbScreenInfoPtr rfbScreen,sraRegionPtr copyRegion,in
rfbReleaseClientIterator
(
iterator
);
rfbReleaseClientIterator
(
iterator
);
}
}
void
rfbDoCopyRegion
(
rfbScreenInfoPtr
rfbS
creen
,
sraRegionPtr
copyRegion
,
int
dx
,
int
dy
)
void
rfbDoCopyRegion
(
rfbScreenInfoPtr
s
creen
,
sraRegionPtr
copyRegion
,
int
dx
,
int
dy
)
{
{
sraRectangleIterator
*
i
;
sraRectangleIterator
*
i
;
sraRect
rect
;
sraRect
rect
;
int
j
,
widthInBytes
,
bpp
=
rfbScreen
->
rfbS
erverFormat
.
bitsPerPixel
/
8
,
int
j
,
widthInBytes
,
bpp
=
screen
->
s
erverFormat
.
bitsPerPixel
/
8
,
rowstride
=
rfbS
creen
->
paddedWidthInBytes
;
rowstride
=
s
creen
->
paddedWidthInBytes
;
char
*
in
,
*
out
;
char
*
in
,
*
out
;
rfbUndrawCursor
(
rfbS
creen
);
rfbUndrawCursor
(
s
creen
);
/* copy it, really */
/* copy it, really */
i
=
sraRgnGetReverseIterator
(
copyRegion
,
dx
<
0
,
dy
<
0
);
i
=
sraRgnGetReverseIterator
(
copyRegion
,
dx
<
0
,
dy
<
0
);
while
(
sraRgnIteratorNext
(
i
,
&
rect
))
{
while
(
sraRgnIteratorNext
(
i
,
&
rect
))
{
widthInBytes
=
(
rect
.
x2
-
rect
.
x1
)
*
bpp
;
widthInBytes
=
(
rect
.
x2
-
rect
.
x1
)
*
bpp
;
out
=
rfbS
creen
->
frameBuffer
+
rect
.
x1
*
bpp
+
rect
.
y1
*
rowstride
;
out
=
s
creen
->
frameBuffer
+
rect
.
x1
*
bpp
+
rect
.
y1
*
rowstride
;
in
=
rfbS
creen
->
frameBuffer
+
(
rect
.
x1
-
dx
)
*
bpp
+
(
rect
.
y1
-
dy
)
*
rowstride
;
in
=
s
creen
->
frameBuffer
+
(
rect
.
x1
-
dx
)
*
bpp
+
(
rect
.
y1
-
dy
)
*
rowstride
;
if
(
dy
<
0
)
if
(
dy
<
0
)
for
(
j
=
rect
.
y1
;
j
<
rect
.
y2
;
j
++
,
out
+=
rowstride
,
in
+=
rowstride
)
for
(
j
=
rect
.
y1
;
j
<
rect
.
y2
;
j
++
,
out
+=
rowstride
,
in
+=
rowstride
)
memmove
(
out
,
in
,
widthInBytes
);
memmove
(
out
,
in
,
widthInBytes
);
...
@@ -186,27 +186,27 @@ void rfbDoCopyRegion(rfbScreenInfoPtr rfbScreen,sraRegionPtr copyRegion,int dx,i
...
@@ -186,27 +186,27 @@ void rfbDoCopyRegion(rfbScreenInfoPtr rfbScreen,sraRegionPtr copyRegion,int dx,i
}
}
}
}
rfbScheduleCopyRegion
(
rfbS
creen
,
copyRegion
,
dx
,
dy
);
rfbScheduleCopyRegion
(
s
creen
,
copyRegion
,
dx
,
dy
);
}
}
void
rfbDoCopyRect
(
rfbScreenInfoPtr
rfbS
creen
,
int
x1
,
int
y1
,
int
x2
,
int
y2
,
int
dx
,
int
dy
)
void
rfbDoCopyRect
(
rfbScreenInfoPtr
s
creen
,
int
x1
,
int
y1
,
int
x2
,
int
y2
,
int
dx
,
int
dy
)
{
{
sraRegionPtr
region
=
sraRgnCreateRect
(
x1
,
y1
,
x2
,
y2
);
sraRegionPtr
region
=
sraRgnCreateRect
(
x1
,
y1
,
x2
,
y2
);
rfbDoCopyRegion
(
rfbS
creen
,
region
,
dx
,
dy
);
rfbDoCopyRegion
(
s
creen
,
region
,
dx
,
dy
);
}
}
void
rfbScheduleCopyRect
(
rfbScreenInfoPtr
rfbS
creen
,
int
x1
,
int
y1
,
int
x2
,
int
y2
,
int
dx
,
int
dy
)
void
rfbScheduleCopyRect
(
rfbScreenInfoPtr
s
creen
,
int
x1
,
int
y1
,
int
x2
,
int
y2
,
int
dx
,
int
dy
)
{
{
sraRegionPtr
region
=
sraRgnCreateRect
(
x1
,
y1
,
x2
,
y2
);
sraRegionPtr
region
=
sraRgnCreateRect
(
x1
,
y1
,
x2
,
y2
);
rfbScheduleCopyRegion
(
rfbS
creen
,
region
,
dx
,
dy
);
rfbScheduleCopyRegion
(
s
creen
,
region
,
dx
,
dy
);
}
}
void
rfbMarkRegionAsModified
(
rfbScreenInfoPtr
rfbS
creen
,
sraRegionPtr
modRegion
)
void
rfbMarkRegionAsModified
(
rfbScreenInfoPtr
s
creen
,
sraRegionPtr
modRegion
)
{
{
rfbClientIteratorPtr
iterator
;
rfbClientIteratorPtr
iterator
;
rfbClientPtr
cl
;
rfbClientPtr
cl
;
iterator
=
rfbGetClientIterator
(
rfbS
creen
);
iterator
=
rfbGetClientIterator
(
s
creen
);
while
((
cl
=
rfbClientIteratorNext
(
iterator
)))
{
while
((
cl
=
rfbClientIteratorNext
(
iterator
)))
{
LOCK
(
cl
->
updateMutex
);
LOCK
(
cl
->
updateMutex
);
sraRgnOr
(
cl
->
modifiedRegion
,
modRegion
);
sraRgnOr
(
cl
->
modifiedRegion
,
modRegion
);
...
@@ -217,23 +217,23 @@ void rfbMarkRegionAsModified(rfbScreenInfoPtr rfbScreen,sraRegionPtr modRegion)
...
@@ -217,23 +217,23 @@ void rfbMarkRegionAsModified(rfbScreenInfoPtr rfbScreen,sraRegionPtr modRegion)
rfbReleaseClientIterator
(
iterator
);
rfbReleaseClientIterator
(
iterator
);
}
}
void
rfbMarkRectAsModified
(
rfbScreenInfoPtr
rfbS
creen
,
int
x1
,
int
y1
,
int
x2
,
int
y2
)
void
rfbMarkRectAsModified
(
rfbScreenInfoPtr
s
creen
,
int
x1
,
int
y1
,
int
x2
,
int
y2
)
{
{
sraRegionPtr
region
;
sraRegionPtr
region
;
int
i
;
int
i
;
if
(
x1
>
x2
)
{
i
=
x1
;
x1
=
x2
;
x2
=
i
;
}
if
(
x1
>
x2
)
{
i
=
x1
;
x1
=
x2
;
x2
=
i
;
}
if
(
x1
<
0
)
x1
=
0
;
if
(
x1
<
0
)
x1
=
0
;
if
(
x2
>=
rfbScreen
->
width
)
x2
=
rfbS
creen
->
width
-
1
;
if
(
x2
>=
screen
->
width
)
x2
=
s
creen
->
width
-
1
;
if
(
x1
==
x2
)
return
;
if
(
x1
==
x2
)
return
;
if
(
y1
>
y2
)
{
i
=
y1
;
y1
=
y2
;
y2
=
i
;
}
if
(
y1
>
y2
)
{
i
=
y1
;
y1
=
y2
;
y2
=
i
;
}
if
(
y1
<
0
)
y1
=
0
;
if
(
y1
<
0
)
y1
=
0
;
if
(
y2
>=
rfbScreen
->
height
)
y2
=
rfbS
creen
->
height
-
1
;
if
(
y2
>=
screen
->
height
)
y2
=
s
creen
->
height
-
1
;
if
(
y1
==
y2
)
return
;
if
(
y1
==
y2
)
return
;
region
=
sraRgnCreateRect
(
x1
,
y1
,
x2
,
y2
);
region
=
sraRgnCreateRect
(
x1
,
y1
,
x2
,
y2
);
rfbMarkRegionAsModified
(
rfbS
creen
,
region
);
rfbMarkRegionAsModified
(
s
creen
,
region
);
sraRgnDestroy
(
region
);
sraRgnDestroy
(
region
);
}
}
...
@@ -269,7 +269,7 @@ clientOutput(void *data)
...
@@ -269,7 +269,7 @@ clientOutput(void *data)
/* OK, now, to save bandwidth, wait a little while for more
/* OK, now, to save bandwidth, wait a little while for more
updates to come along. */
updates to come along. */
usleep
(
cl
->
screen
->
rfbD
eferUpdateTime
*
1000
);
usleep
(
cl
->
screen
->
d
eferUpdateTime
*
1000
);
/* Now, get the region we're going to update, and remove
/* Now, get the region we're going to update, and remove
it from cl->modifiedRegion _before_ we send the update.
it from cl->modifiedRegion _before_ we send the update.
...
@@ -319,7 +319,7 @@ clientInput(void *data)
...
@@ -319,7 +319,7 @@ clientInput(void *data)
static
void
*
static
void
*
listenerRun
(
void
*
data
)
listenerRun
(
void
*
data
)
{
{
rfbScreenInfoPtr
rfbS
creen
=
(
rfbScreenInfoPtr
)
data
;
rfbScreenInfoPtr
s
creen
=
(
rfbScreenInfoPtr
)
data
;
int
client_fd
;
int
client_fd
;
struct
sockaddr_in
peer
;
struct
sockaddr_in
peer
;
rfbClientPtr
cl
;
rfbClientPtr
cl
;
...
@@ -328,9 +328,9 @@ listenerRun(void *data)
...
@@ -328,9 +328,9 @@ listenerRun(void *data)
len
=
sizeof
(
peer
);
len
=
sizeof
(
peer
);
/* TODO: this thread wont die by restarting the server */
/* TODO: this thread wont die by restarting the server */
while
((
client_fd
=
accept
(
rfbScreen
->
rfbL
istenSock
,
while
((
client_fd
=
accept
(
screen
->
l
istenSock
,
(
struct
sockaddr
*
)
&
peer
,
&
len
))
>=
0
)
{
(
struct
sockaddr
*
)
&
peer
,
&
len
))
>=
0
)
{
cl
=
rfbNewClient
(
rfbS
creen
,
client_fd
);
cl
=
rfbNewClient
(
s
creen
,
client_fd
);
len
=
sizeof
(
peer
);
len
=
sizeof
(
peer
);
if
(
cl
&&
!
cl
->
onHold
)
if
(
cl
&&
!
cl
->
onHold
)
...
@@ -363,12 +363,12 @@ rfbRefuseOnHoldClient(rfbClientPtr cl)
...
@@ -363,12 +363,12 @@ rfbRefuseOnHoldClient(rfbClientPtr cl)
}
}
static
void
static
void
d
efaultKbdAddEvent
(
rfbBool
down
,
rfbKeySym
keySym
,
rfbClientPtr
cl
)
rfbD
efaultKbdAddEvent
(
rfbBool
down
,
rfbKeySym
keySym
,
rfbClientPtr
cl
)
{
{
}
}
void
void
d
efaultPtrAddEvent
(
int
buttonMask
,
int
x
,
int
y
,
rfbClientPtr
cl
)
rfbD
efaultPtrAddEvent
(
int
buttonMask
,
int
x
,
int
y
,
rfbClientPtr
cl
)
{
{
rfbClientIteratorPtr
iterator
;
rfbClientIteratorPtr
iterator
;
rfbClientPtr
other_client
;
rfbClientPtr
other_client
;
...
@@ -398,7 +398,7 @@ defaultPtrAddEvent(int buttonMask, int x, int y, rfbClientPtr cl)
...
@@ -398,7 +398,7 @@ defaultPtrAddEvent(int buttonMask, int x, int y, rfbClientPtr cl)
}
}
}
}
void
d
efaultSetXCutText
(
char
*
text
,
int
len
,
rfbClientPtr
cl
)
void
rfbD
efaultSetXCutText
(
char
*
text
,
int
len
,
rfbClientPtr
cl
)
{
{
}
}
...
@@ -431,23 +431,23 @@ static rfbCursor myCursor =
...
@@ -431,23 +431,23 @@ static rfbCursor myCursor =
};
};
#endif
#endif
rfbCursorPtr
d
efaultGetCursorPtr
(
rfbClientPtr
cl
)
rfbCursorPtr
rfbD
efaultGetCursorPtr
(
rfbClientPtr
cl
)
{
{
return
(
cl
->
screen
->
cursor
);
return
(
cl
->
screen
->
cursor
);
}
}
/* response is cl->authChallenge vncEncrypted with passwd */
/* response is cl->authChallenge vncEncrypted with passwd */
rfbBool
d
efaultPasswordCheck
(
rfbClientPtr
cl
,
const
char
*
response
,
int
len
)
rfbBool
rfbD
efaultPasswordCheck
(
rfbClientPtr
cl
,
const
char
*
response
,
int
len
)
{
{
int
i
;
int
i
;
char
*
passwd
=
vncDecryptPasswdFromFile
(
cl
->
screen
->
rfbA
uthPasswdData
);
char
*
passwd
=
rfbDecryptPasswdFromFile
(
cl
->
screen
->
a
uthPasswdData
);
if
(
!
passwd
)
{
if
(
!
passwd
)
{
rfbErr
(
"Couldn't read password file: %s
\n
"
,
cl
->
screen
->
rfbA
uthPasswdData
);
rfbErr
(
"Couldn't read password file: %s
\n
"
,
cl
->
screen
->
a
uthPasswdData
);
return
(
FALSE
);
return
(
FALSE
);
}
}
vnc
EncryptBytes
(
cl
->
authChallenge
,
passwd
);
rfb
EncryptBytes
(
cl
->
authChallenge
,
passwd
);
/* Lose the password from memory */
/* Lose the password from memory */
for
(
i
=
strlen
(
passwd
);
i
>=
0
;
i
--
)
{
for
(
i
=
strlen
(
passwd
);
i
>=
0
;
i
--
)
{
...
@@ -457,7 +457,7 @@ rfbBool defaultPasswordCheck(rfbClientPtr cl,const char* response,int len)
...
@@ -457,7 +457,7 @@ rfbBool defaultPasswordCheck(rfbClientPtr cl,const char* response,int len)
free
(
passwd
);
free
(
passwd
);
if
(
memcmp
(
cl
->
authChallenge
,
response
,
len
)
!=
0
)
{
if
(
memcmp
(
cl
->
authChallenge
,
response
,
len
)
!=
0
)
{
rfbErr
(
"
rfbA
uthProcessClientMessage: authentication failed from %s
\n
"
,
rfbErr
(
"
a
uthProcessClientMessage: authentication failed from %s
\n
"
,
cl
->
host
);
cl
->
host
);
return
(
FALSE
);
return
(
FALSE
);
}
}
...
@@ -465,55 +465,55 @@ rfbBool defaultPasswordCheck(rfbClientPtr cl,const char* response,int len)
...
@@ -465,55 +465,55 @@ rfbBool defaultPasswordCheck(rfbClientPtr cl,const char* response,int len)
return
(
TRUE
);
return
(
TRUE
);
}
}
/* for this method,
rfbA
uthPasswdData is really a pointer to an array
/* for this method,
a
uthPasswdData is really a pointer to an array
of char*'s, where the last pointer is 0. */
of char*'s, where the last pointer is 0. */
rfbBool
rfbCheckPasswordByList
(
rfbClientPtr
cl
,
const
char
*
response
,
int
len
)
rfbBool
rfbCheckPasswordByList
(
rfbClientPtr
cl
,
const
char
*
response
,
int
len
)
{
{
char
**
passwds
;
char
**
passwds
;
int
i
=
0
;
int
i
=
0
;
for
(
passwds
=
(
char
**
)
cl
->
screen
->
rfbA
uthPasswdData
;
*
passwds
;
passwds
++
,
i
++
)
{
for
(
passwds
=
(
char
**
)
cl
->
screen
->
a
uthPasswdData
;
*
passwds
;
passwds
++
,
i
++
)
{
uint8_t
auth_tmp
[
CHALLENGESIZE
];
uint8_t
auth_tmp
[
CHALLENGESIZE
];
memcpy
((
char
*
)
auth_tmp
,
(
char
*
)
cl
->
authChallenge
,
CHALLENGESIZE
);
memcpy
((
char
*
)
auth_tmp
,
(
char
*
)
cl
->
authChallenge
,
CHALLENGESIZE
);
vnc
EncryptBytes
(
auth_tmp
,
*
passwds
);
rfb
EncryptBytes
(
auth_tmp
,
*
passwds
);
if
(
memcmp
(
auth_tmp
,
response
,
len
)
==
0
)
{
if
(
memcmp
(
auth_tmp
,
response
,
len
)
==
0
)
{
if
(
i
>=
cl
->
screen
->
rfbA
uthPasswdFirstViewOnly
)
if
(
i
>=
cl
->
screen
->
a
uthPasswdFirstViewOnly
)
cl
->
viewOnly
=
TRUE
;
cl
->
viewOnly
=
TRUE
;
return
(
TRUE
);
return
(
TRUE
);
}
}
}
}
rfbErr
(
"
rfbA
uthProcessClientMessage: authentication failed from %s
\n
"
,
rfbErr
(
"
a
uthProcessClientMessage: authentication failed from %s
\n
"
,
cl
->
host
);
cl
->
host
);
return
(
FALSE
);
return
(
FALSE
);
}
}
void
d
oNothingWithClient
(
rfbClientPtr
cl
)
void
rfbD
oNothingWithClient
(
rfbClientPtr
cl
)
{
{
}
}
enum
rfbNewClientAction
d
efaultNewClientHook
(
rfbClientPtr
cl
)
enum
rfbNewClientAction
rfbD
efaultNewClientHook
(
rfbClientPtr
cl
)
{
{
return
RFB_CLIENT_ACCEPT
;
return
RFB_CLIENT_ACCEPT
;
}
}
/*
/*
* Update server's pixel format in
rfbS
creenInfo structure. This
* Update server's pixel format in
s
creenInfo structure. This
* function is called from rfbGetScreen() and rfbNewFramebuffer().
* function is called from rfbGetScreen() and rfbNewFramebuffer().
*/
*/
static
void
rfbInitServerFormat
(
rfbScreenInfoPtr
rfbS
creen
,
int
bitsPerSample
)
static
void
rfbInitServerFormat
(
rfbScreenInfoPtr
s
creen
,
int
bitsPerSample
)
{
{
rfbPixelFormat
*
format
=&
rfbScreen
->
rfbS
erverFormat
;
rfbPixelFormat
*
format
=&
screen
->
s
erverFormat
;
format
->
bitsPerPixel
=
rfbS
creen
->
bitsPerPixel
;
format
->
bitsPerPixel
=
s
creen
->
bitsPerPixel
;
format
->
depth
=
rfbS
creen
->
depth
;
format
->
depth
=
s
creen
->
depth
;
format
->
bigEndian
=
rfbEndianTest
?
FALSE
:
TRUE
;
format
->
bigEndian
=
rfbEndianTest
?
FALSE
:
TRUE
;
format
->
trueColour
=
TRUE
;
format
->
trueColour
=
TRUE
;
rfbS
creen
->
colourMap
.
count
=
0
;
s
creen
->
colourMap
.
count
=
0
;
rfbS
creen
->
colourMap
.
is16
=
0
;
s
creen
->
colourMap
.
is16
=
0
;
rfbS
creen
->
colourMap
.
data
.
bytes
=
NULL
;
s
creen
->
colourMap
.
data
.
bytes
=
NULL
;
if
(
format
->
bitsPerPixel
==
8
)
{
if
(
format
->
bitsPerPixel
==
8
)
{
format
->
redMax
=
7
;
format
->
redMax
=
7
;
...
@@ -548,104 +548,104 @@ rfbScreenInfoPtr rfbGetScreen(int* argc,char** argv,
...
@@ -548,104 +548,104 @@ rfbScreenInfoPtr rfbGetScreen(int* argc,char** argv,
int
width
,
int
height
,
int
bitsPerSample
,
int
samplesPerPixel
,
int
width
,
int
height
,
int
bitsPerSample
,
int
samplesPerPixel
,
int
bytesPerPixel
)
int
bytesPerPixel
)
{
{
rfbScreenInfoPtr
rfbS
creen
=
malloc
(
sizeof
(
rfbScreenInfo
));
rfbScreenInfoPtr
s
creen
=
malloc
(
sizeof
(
rfbScreenInfo
));
INIT_MUTEX
(
logMutex
);
INIT_MUTEX
(
logMutex
);
if
(
width
&
3
)
if
(
width
&
3
)
rfbErr
(
"WARNING: Width (%d) is not a multiple of 4. VncViewer has problems with that.
\n
"
,
width
);
rfbErr
(
"WARNING: Width (%d) is not a multiple of 4. VncViewer has problems with that.
\n
"
,
width
);
rfbS
creen
->
autoPort
=
FALSE
;
s
creen
->
autoPort
=
FALSE
;
rfbScreen
->
rfbC
lientHead
=
0
;
screen
->
c
lientHead
=
0
;
rfbScreen
->
rfbP
ort
=
5900
;
screen
->
p
ort
=
5900
;
rfbS
creen
->
socketInitDone
=
FALSE
;
s
creen
->
socketInitDone
=
FALSE
;
rfbS
creen
->
inetdInitDone
=
FALSE
;
s
creen
->
inetdInitDone
=
FALSE
;
rfbS
creen
->
inetdSock
=-
1
;
s
creen
->
inetdSock
=-
1
;
rfbS
creen
->
udpSock
=-
1
;
s
creen
->
udpSock
=-
1
;
rfbS
creen
->
udpSockConnected
=
FALSE
;
s
creen
->
udpSockConnected
=
FALSE
;
rfbS
creen
->
udpPort
=
0
;
s
creen
->
udpPort
=
0
;
rfbS
creen
->
udpClient
=
0
;
s
creen
->
udpClient
=
0
;
rfbS
creen
->
maxFd
=
0
;
s
creen
->
maxFd
=
0
;
rfbScreen
->
rfbL
istenSock
=-
1
;
screen
->
l
istenSock
=-
1
;
rfbS
creen
->
httpInitDone
=
FALSE
;
s
creen
->
httpInitDone
=
FALSE
;
rfbS
creen
->
httpEnableProxyConnect
=
FALSE
;
s
creen
->
httpEnableProxyConnect
=
FALSE
;
rfbS
creen
->
httpPort
=
0
;
s
creen
->
httpPort
=
0
;
rfbS
creen
->
httpDir
=
NULL
;
s
creen
->
httpDir
=
NULL
;
rfbS
creen
->
httpListenSock
=-
1
;
s
creen
->
httpListenSock
=-
1
;
rfbS
creen
->
httpSock
=-
1
;
s
creen
->
httpSock
=-
1
;
rfbS
creen
->
desktopName
=
"LibVNCServer"
;
s
creen
->
desktopName
=
"LibVNCServer"
;
rfbScreen
->
rfbA
lwaysShared
=
FALSE
;
screen
->
a
lwaysShared
=
FALSE
;
rfbScreen
->
rfbN
everShared
=
FALSE
;
screen
->
n
everShared
=
FALSE
;
rfbScreen
->
rfbD
ontDisconnect
=
FALSE
;
screen
->
d
ontDisconnect
=
FALSE
;
rfbScreen
->
rfbA
uthPasswdData
=
0
;
screen
->
a
uthPasswdData
=
0
;
rfbScreen
->
rfbA
uthPasswdFirstViewOnly
=
1
;
screen
->
a
uthPasswdFirstViewOnly
=
1
;
rfbS
creen
->
width
=
width
;
s
creen
->
width
=
width
;
rfbS
creen
->
height
=
height
;
s
creen
->
height
=
height
;
rfbScreen
->
bitsPerPixel
=
rfbS
creen
->
depth
=
8
*
bytesPerPixel
;
screen
->
bitsPerPixel
=
s
creen
->
depth
=
8
*
bytesPerPixel
;
rfbScreen
->
passwordCheck
=
d
efaultPasswordCheck
;
screen
->
passwordCheck
=
rfbD
efaultPasswordCheck
;
rfbS
creen
->
ignoreSIGPIPE
=
TRUE
;
s
creen
->
ignoreSIGPIPE
=
TRUE
;
/* disable progressive updating per default */
/* disable progressive updating per default */
rfbS
creen
->
progressiveSliceHeight
=
0
;
s
creen
->
progressiveSliceHeight
=
0
;
if
(
!
rfbProcessArguments
(
rfbS
creen
,
argc
,
argv
))
{
if
(
!
rfbProcessArguments
(
s
creen
,
argc
,
argv
))
{
free
(
rfbS
creen
);
free
(
s
creen
);
return
0
;
return
0
;
}
}
#ifdef WIN32
#ifdef WIN32
{
{
DWORD
dummy
=
255
;
DWORD
dummy
=
255
;
GetComputerName
(
rfbScreen
->
rfbT
hisHost
,
&
dummy
);
GetComputerName
(
screen
->
t
hisHost
,
&
dummy
);
}
}
#else
#else
gethostname
(
rfbScreen
->
rfbT
hisHost
,
255
);
gethostname
(
screen
->
t
hisHost
,
255
);
#endif
#endif
rfbS
creen
->
paddedWidthInBytes
=
width
*
bytesPerPixel
;
s
creen
->
paddedWidthInBytes
=
width
*
bytesPerPixel
;
/* format */
/* format */
rfbInitServerFormat
(
rfbS
creen
,
bitsPerSample
);
rfbInitServerFormat
(
s
creen
,
bitsPerSample
);
/* cursor */
/* cursor */
rfbS
creen
->
cursorIsDrawn
=
FALSE
;
s
creen
->
cursorIsDrawn
=
FALSE
;
rfbS
creen
->
dontSendFramebufferUpdate
=
FALSE
;
s
creen
->
dontSendFramebufferUpdate
=
FALSE
;
rfbScreen
->
cursorX
=
rfbScreen
->
cursorY
=
rfbS
creen
->
underCursorBufferLen
=
0
;
screen
->
cursorX
=
screen
->
cursorY
=
s
creen
->
underCursorBufferLen
=
0
;
rfbS
creen
->
underCursorBuffer
=
NULL
;
s
creen
->
underCursorBuffer
=
NULL
;
rfbS
creen
->
dontConvertRichCursorToXCursor
=
FALSE
;
s
creen
->
dontConvertRichCursorToXCursor
=
FALSE
;
rfbS
creen
->
cursor
=
&
myCursor
;
s
creen
->
cursor
=
&
myCursor
;
INIT_MUTEX
(
rfbS
creen
->
cursorMutex
);
INIT_MUTEX
(
s
creen
->
cursorMutex
);
IF_PTHREADS
(
rfbS
creen
->
backgroundLoop
=
FALSE
);
IF_PTHREADS
(
s
creen
->
backgroundLoop
=
FALSE
);
rfbScreen
->
rfbD
eferUpdateTime
=
5
;
screen
->
d
eferUpdateTime
=
5
;
rfbS
creen
->
maxRectsPerUpdate
=
50
;
s
creen
->
maxRectsPerUpdate
=
50
;
/* proc's and hook's */
/* proc's and hook's */
rfbScreen
->
kbdAddEvent
=
d
efaultKbdAddEvent
;
screen
->
kbdAddEvent
=
rfbD
efaultKbdAddEvent
;
rfbScreen
->
kbdReleaseAllKeys
=
d
oNothingWithClient
;
screen
->
kbdReleaseAllKeys
=
rfbD
oNothingWithClient
;
rfbScreen
->
ptrAddEvent
=
d
efaultPtrAddEvent
;
screen
->
ptrAddEvent
=
rfbD
efaultPtrAddEvent
;
rfbScreen
->
setXCutText
=
d
efaultSetXCutText
;
screen
->
setXCutText
=
rfbD
efaultSetXCutText
;
rfbScreen
->
getCursorPtr
=
d
efaultGetCursorPtr
;
screen
->
getCursorPtr
=
rfbD
efaultGetCursorPtr
;
rfbS
creen
->
setTranslateFunction
=
rfbSetTranslateFunction
;
s
creen
->
setTranslateFunction
=
rfbSetTranslateFunction
;
rfbScreen
->
newClientHook
=
d
efaultNewClientHook
;
screen
->
newClientHook
=
rfbD
efaultNewClientHook
;
rfbS
creen
->
displayHook
=
0
;
s
creen
->
displayHook
=
0
;
/* initialize client list and iterator mutex */
/* initialize client list and iterator mutex */
rfbClientListInit
(
rfbS
creen
);
rfbClientListInit
(
s
creen
);
return
(
rfbS
creen
);
return
(
s
creen
);
}
}
/*
/*
...
@@ -656,7 +656,7 @@ rfbScreenInfoPtr rfbGetScreen(int* argc,char** argv,
...
@@ -656,7 +656,7 @@ rfbScreenInfoPtr rfbGetScreen(int* argc,char** argv,
* the caller.
* the caller.
*/
*/
void
rfbNewFramebuffer
(
rfbScreenInfoPtr
rfbS
creen
,
char
*
framebuffer
,
void
rfbNewFramebuffer
(
rfbScreenInfoPtr
s
creen
,
char
*
framebuffer
,
int
width
,
int
height
,
int
width
,
int
height
,
int
bitsPerSample
,
int
samplesPerPixel
,
int
bitsPerSample
,
int
samplesPerPixel
,
int
bytesPerPixel
)
int
bytesPerPixel
)
...
@@ -668,44 +668,44 @@ void rfbNewFramebuffer(rfbScreenInfoPtr rfbScreen, char *framebuffer,
...
@@ -668,44 +668,44 @@ void rfbNewFramebuffer(rfbScreenInfoPtr rfbScreen, char *framebuffer,
/* Remove the pointer */
/* Remove the pointer */
rfbUndrawCursor
(
rfbS
creen
);
rfbUndrawCursor
(
s
creen
);
/* Update information in the
rfbS
creenInfo structure */
/* Update information in the
s
creenInfo structure */
old_format
=
rfbScreen
->
rfbS
erverFormat
;
old_format
=
screen
->
s
erverFormat
;
if
(
width
&
3
)
if
(
width
&
3
)
rfbErr
(
"WARNING: New width (%d) is not a multiple of 4.
\n
"
,
width
);
rfbErr
(
"WARNING: New width (%d) is not a multiple of 4.
\n
"
,
width
);
rfbS
creen
->
width
=
width
;
s
creen
->
width
=
width
;
rfbS
creen
->
height
=
height
;
s
creen
->
height
=
height
;
rfbScreen
->
bitsPerPixel
=
rfbS
creen
->
depth
=
8
*
bytesPerPixel
;
screen
->
bitsPerPixel
=
s
creen
->
depth
=
8
*
bytesPerPixel
;
rfbS
creen
->
paddedWidthInBytes
=
width
*
bytesPerPixel
;
s
creen
->
paddedWidthInBytes
=
width
*
bytesPerPixel
;
rfbInitServerFormat
(
rfbS
creen
,
bitsPerSample
);
rfbInitServerFormat
(
s
creen
,
bitsPerSample
);
if
(
memcmp
(
&
rfbScreen
->
rfbS
erverFormat
,
&
old_format
,
if
(
memcmp
(
&
screen
->
s
erverFormat
,
&
old_format
,
sizeof
(
rfbPixelFormat
))
!=
0
)
{
sizeof
(
rfbPixelFormat
))
!=
0
)
{
format_changed
=
TRUE
;
format_changed
=
TRUE
;
}
}
rfbS
creen
->
frameBuffer
=
framebuffer
;
s
creen
->
frameBuffer
=
framebuffer
;
/* Adjust pointer position if necessary */
/* Adjust pointer position if necessary */
if
(
rfbS
creen
->
cursorX
>=
width
)
if
(
s
creen
->
cursorX
>=
width
)
rfbS
creen
->
cursorX
=
width
-
1
;
s
creen
->
cursorX
=
width
-
1
;
if
(
rfbS
creen
->
cursorY
>=
height
)
if
(
s
creen
->
cursorY
>=
height
)
rfbS
creen
->
cursorY
=
height
-
1
;
s
creen
->
cursorY
=
height
-
1
;
/* For each client: */
/* For each client: */
iterator
=
rfbGetClientIterator
(
rfbS
creen
);
iterator
=
rfbGetClientIterator
(
s
creen
);
while
((
cl
=
rfbClientIteratorNext
(
iterator
))
!=
NULL
)
{
while
((
cl
=
rfbClientIteratorNext
(
iterator
))
!=
NULL
)
{
/* Re-install color translation tables if necessary */
/* Re-install color translation tables if necessary */
if
(
format_changed
)
if
(
format_changed
)
rfbS
creen
->
setTranslateFunction
(
cl
);
s
creen
->
setTranslateFunction
(
cl
);
/* Mark the screen contents as changed, and schedule sending
/* Mark the screen contents as changed, and schedule sending
NewFBSize message if supported by this client. */
NewFBSize message if supported by this client. */
...
@@ -730,9 +730,9 @@ void rfbNewFramebuffer(rfbScreenInfoPtr rfbScreen, char *framebuffer,
...
@@ -730,9 +730,9 @@ void rfbNewFramebuffer(rfbScreenInfoPtr rfbScreen, char *framebuffer,
extern
void
TightCleanup
();
extern
void
TightCleanup
();
#endif
#endif
void
rfbScreenCleanup
(
rfbScreenInfoPtr
rfbS
creen
)
void
rfbScreenCleanup
(
rfbScreenInfoPtr
s
creen
)
{
{
rfbClientIteratorPtr
i
=
rfbGetClientIterator
(
rfbS
creen
);
rfbClientIteratorPtr
i
=
rfbGetClientIterator
(
s
creen
);
rfbClientPtr
cl
,
cl1
=
rfbClientIteratorNext
(
i
);
rfbClientPtr
cl
,
cl1
=
rfbClientIteratorNext
(
i
);
while
(
cl1
)
{
while
(
cl1
)
{
cl
=
rfbClientIteratorNext
(
i
);
cl
=
rfbClientIteratorNext
(
i
);
...
@@ -742,27 +742,27 @@ void rfbScreenCleanup(rfbScreenInfoPtr rfbScreen)
...
@@ -742,27 +742,27 @@ void rfbScreenCleanup(rfbScreenInfoPtr rfbScreen)
rfbReleaseClientIterator
(
i
);
rfbReleaseClientIterator
(
i
);
/* TODO: hang up on all clients and free all reserved memory */
/* TODO: hang up on all clients and free all reserved memory */
#define FREE_IF(x) if(
rfbScreen->x) free(rfbS
creen->x)
#define FREE_IF(x) if(
screen->x) free(s
creen->x)
FREE_IF
(
colourMap
.
data
.
bytes
);
FREE_IF
(
colourMap
.
data
.
bytes
);
FREE_IF
(
underCursorBuffer
);
FREE_IF
(
underCursorBuffer
);
TINI_MUTEX
(
rfbS
creen
->
cursorMutex
);
TINI_MUTEX
(
s
creen
->
cursorMutex
);
if
(
rfbS
creen
->
cursor
)
if
(
s
creen
->
cursor
)
rfbFreeCursor
(
rfbS
creen
->
cursor
);
rfbFreeCursor
(
s
creen
->
cursor
);
free
(
rfbS
creen
);
free
(
s
creen
);
#ifdef LIBVNCSERVER_HAVE_LIBJPEG
#ifdef LIBVNCSERVER_HAVE_LIBJPEG
TightCleanup
();
rfb
TightCleanup
();
#endif
#endif
}
}
void
rfbInitServer
(
rfbScreenInfoPtr
rfbS
creen
)
void
rfbInitServer
(
rfbScreenInfoPtr
s
creen
)
{
{
#ifdef WIN32
#ifdef WIN32
WSADATA
trash
;
WSADATA
trash
;
int
i
=
WSAStartup
(
MAKEWORD
(
2
,
2
),
&
trash
);
int
i
=
WSAStartup
(
MAKEWORD
(
2
,
2
),
&
trash
);
#endif
#endif
rfbInitSockets
(
rfbS
creen
);
rfbInitSockets
(
s
creen
);
httpInitSockets
(
rfbS
creen
);
rfbHttpInitSockets
(
s
creen
);
if
(
rfbS
creen
->
ignoreSIGPIPE
)
if
(
s
creen
->
ignoreSIGPIPE
)
signal
(
SIGPIPE
,
SIG_IGN
);
signal
(
SIGPIPE
,
SIG_IGN
);
}
}
...
@@ -784,27 +784,27 @@ void gettimeofday(struct timeval* tv,char* dummy)
...
@@ -784,27 +784,27 @@ void gettimeofday(struct timeval* tv,char* dummy)
rfbClientPtr
rfbClientIteratorHead
(
rfbClientIteratorPtr
i
);
rfbClientPtr
rfbClientIteratorHead
(
rfbClientIteratorPtr
i
);
void
void
rfbProcessEvents
(
rfbScreenInfoPtr
rfbS
creen
,
long
usec
)
rfbProcessEvents
(
rfbScreenInfoPtr
s
creen
,
long
usec
)
{
{
rfbClientIteratorPtr
i
;
rfbClientIteratorPtr
i
;
rfbClientPtr
cl
,
clPrev
;
rfbClientPtr
cl
,
clPrev
;
struct
timeval
tv
;
struct
timeval
tv
;
if
(
usec
<
0
)
if
(
usec
<
0
)
usec
=
rfbScreen
->
rfbD
eferUpdateTime
*
1000
;
usec
=
screen
->
d
eferUpdateTime
*
1000
;
rfbCheckFds
(
rfbS
creen
,
usec
);
rfbCheckFds
(
s
creen
,
usec
);
httpCheckFds
(
rfbS
creen
);
rfbHttpCheckFds
(
s
creen
);
#ifdef CORBA
#ifdef CORBA
corbaCheckFds
(
rfbS
creen
);
corbaCheckFds
(
s
creen
);
#endif
#endif
i
=
rfbGetClientIterator
(
rfbS
creen
);
i
=
rfbGetClientIterator
(
s
creen
);
cl
=
rfbClientIteratorHead
(
i
);
cl
=
rfbClientIteratorHead
(
i
);
while
(
cl
)
{
while
(
cl
)
{
if
(
cl
->
sock
>=
0
&&
!
cl
->
onHold
&&
FB_UPDATE_PENDING
(
cl
)
&&
if
(
cl
->
sock
>=
0
&&
!
cl
->
onHold
&&
FB_UPDATE_PENDING
(
cl
)
&&
!
sraRgnEmpty
(
cl
->
requestedRegion
))
{
!
sraRgnEmpty
(
cl
->
requestedRegion
))
{
if
(
rfbScreen
->
rfbD
eferUpdateTime
==
0
)
{
if
(
screen
->
d
eferUpdateTime
==
0
)
{
rfbSendFramebufferUpdate
(
cl
,
cl
->
modifiedRegion
);
rfbSendFramebufferUpdate
(
cl
,
cl
->
modifiedRegion
);
}
else
if
(
cl
->
startDeferring
.
tv_usec
==
0
)
{
}
else
if
(
cl
->
startDeferring
.
tv_usec
==
0
)
{
gettimeofday
(
&
cl
->
startDeferring
,
NULL
);
gettimeofday
(
&
cl
->
startDeferring
,
NULL
);
...
@@ -815,7 +815,7 @@ rfbProcessEvents(rfbScreenInfoPtr rfbScreen,long usec)
...
@@ -815,7 +815,7 @@ rfbProcessEvents(rfbScreenInfoPtr rfbScreen,long usec)
if
(
tv
.
tv_sec
<
cl
->
startDeferring
.
tv_sec
/* at midnight */
if
(
tv
.
tv_sec
<
cl
->
startDeferring
.
tv_sec
/* at midnight */
||
((
tv
.
tv_sec
-
cl
->
startDeferring
.
tv_sec
)
*
1000
||
((
tv
.
tv_sec
-
cl
->
startDeferring
.
tv_sec
)
*
1000
+
(
tv
.
tv_usec
-
cl
->
startDeferring
.
tv_usec
)
/
1000
)
+
(
tv
.
tv_usec
-
cl
->
startDeferring
.
tv_usec
)
/
1000
)
>
rfbScreen
->
rfbD
eferUpdateTime
)
{
>
screen
->
d
eferUpdateTime
)
{
cl
->
startDeferring
.
tv_usec
=
0
;
cl
->
startDeferring
.
tv_usec
=
0
;
rfbSendFramebufferUpdate
(
cl
,
cl
->
modifiedRegion
);
rfbSendFramebufferUpdate
(
cl
,
cl
->
modifiedRegion
);
}
}
...
@@ -829,15 +829,15 @@ rfbProcessEvents(rfbScreenInfoPtr rfbScreen,long usec)
...
@@ -829,15 +829,15 @@ rfbProcessEvents(rfbScreenInfoPtr rfbScreen,long usec)
rfbReleaseClientIterator
(
i
);
rfbReleaseClientIterator
(
i
);
}
}
void
rfbRunEventLoop
(
rfbScreenInfoPtr
rfbS
creen
,
long
usec
,
rfbBool
runInBackground
)
void
rfbRunEventLoop
(
rfbScreenInfoPtr
s
creen
,
long
usec
,
rfbBool
runInBackground
)
{
{
if
(
runInBackground
)
{
if
(
runInBackground
)
{
#ifdef LIBVNCSERVER_HAVE_LIBPTHREAD
#ifdef LIBVNCSERVER_HAVE_LIBPTHREAD
pthread_t
listener_thread
;
pthread_t
listener_thread
;
rfbS
creen
->
backgroundLoop
=
TRUE
;
s
creen
->
backgroundLoop
=
TRUE
;
pthread_create
(
&
listener_thread
,
NULL
,
listenerRun
,
rfbS
creen
);
pthread_create
(
&
listener_thread
,
NULL
,
listenerRun
,
s
creen
);
return
;
return
;
#else
#else
rfbErr
(
"Can't run in background, because I don't have PThreads!
\n
"
);
rfbErr
(
"Can't run in background, because I don't have PThreads!
\n
"
);
...
@@ -846,8 +846,8 @@ void rfbRunEventLoop(rfbScreenInfoPtr rfbScreen, long usec, rfbBool runInBackgro
...
@@ -846,8 +846,8 @@ void rfbRunEventLoop(rfbScreenInfoPtr rfbScreen, long usec, rfbBool runInBackgro
}
}
if
(
usec
<
0
)
if
(
usec
<
0
)
usec
=
rfbScreen
->
rfbD
eferUpdateTime
*
1000
;
usec
=
screen
->
d
eferUpdateTime
*
1000
;
while
(
1
)
while
(
1
)
rfbProcessEvents
(
rfbS
creen
,
usec
);
rfbProcessEvents
(
s
creen
,
usec
);
}
}
libvncserver/rfbserver.c
View file @
97299606
...
@@ -60,7 +60,7 @@
...
@@ -60,7 +60,7 @@
#define DEBUGPROTO(x)
#define DEBUGPROTO(x)
#endif
#endif
rfbClientPtr
pointerClient
=
NULL
;
/* Mutex
for pointer events */
static
rfbClientPtr
pointerClient
=
NULL
;
/* "Mutex"
for pointer events */
static
void
rfbProcessClientProtocolVersion
(
rfbClientPtr
cl
);
static
void
rfbProcessClientProtocolVersion
(
rfbClientPtr
cl
);
static
void
rfbProcessClientNormalMessage
(
rfbClientPtr
cl
);
static
void
rfbProcessClientNormalMessage
(
rfbClientPtr
cl
);
...
@@ -105,7 +105,7 @@ rfbClientListInit(rfbScreenInfoPtr rfbScreen)
...
@@ -105,7 +105,7 @@ rfbClientListInit(rfbScreenInfoPtr rfbScreen)
/* we cannot continue, because rfbBool is supposed to be char everywhere */
/* we cannot continue, because rfbBool is supposed to be char everywhere */
exit
(
1
);
exit
(
1
);
}
}
rfbScreen
->
rfbC
lientHead
=
NULL
;
rfbScreen
->
c
lientHead
=
NULL
;
INIT_MUTEX
(
rfbClientListMutex
);
INIT_MUTEX
(
rfbClientListMutex
);
}
}
...
@@ -125,11 +125,11 @@ rfbClientIteratorHead(rfbClientIteratorPtr i)
...
@@ -125,11 +125,11 @@ rfbClientIteratorHead(rfbClientIteratorPtr i)
#ifdef LIBVNCSERVER_HAVE_LIBPTHREAD
#ifdef LIBVNCSERVER_HAVE_LIBPTHREAD
if
(
i
->
next
!=
0
)
{
if
(
i
->
next
!=
0
)
{
rfbDecrClientRef
(
i
->
next
);
rfbDecrClientRef
(
i
->
next
);
rfbIncrClientRef
(
i
->
screen
->
rfbC
lientHead
);
rfbIncrClientRef
(
i
->
screen
->
c
lientHead
);
}
}
#endif
#endif
LOCK
(
rfbClientListMutex
);
LOCK
(
rfbClientListMutex
);
i
->
next
=
i
->
screen
->
rfbC
lientHead
;
i
->
next
=
i
->
screen
->
c
lientHead
;
UNLOCK
(
rfbClientListMutex
);
UNLOCK
(
rfbClientListMutex
);
return
i
->
next
;
return
i
->
next
;
}
}
...
@@ -139,7 +139,7 @@ rfbClientIteratorNext(rfbClientIteratorPtr i)
...
@@ -139,7 +139,7 @@ rfbClientIteratorNext(rfbClientIteratorPtr i)
{
{
if
(
i
->
next
==
0
)
{
if
(
i
->
next
==
0
)
{
LOCK
(
rfbClientListMutex
);
LOCK
(
rfbClientListMutex
);
i
->
next
=
i
->
screen
->
rfbC
lientHead
;
i
->
next
=
i
->
screen
->
c
lientHead
;
UNLOCK
(
rfbClientListMutex
);
UNLOCK
(
rfbClientListMutex
);
}
else
{
}
else
{
IF_PTHREADS
(
rfbClientPtr
cl
=
i
->
next
);
IF_PTHREADS
(
rfbClientPtr
cl
=
i
->
next
);
...
@@ -298,19 +298,19 @@ rfbNewTCPOrUDPClient(rfbScreen,sock,isUDP)
...
@@ -298,19 +298,19 @@ rfbNewTCPOrUDPClient(rfbScreen,sock,isUDP)
cl
->
requestedRegion
=
sraRgnCreate
();
cl
->
requestedRegion
=
sraRgnCreate
();
cl
->
format
=
cl
->
screen
->
rfbS
erverFormat
;
cl
->
format
=
cl
->
screen
->
s
erverFormat
;
cl
->
translateFn
=
rfbTranslateNone
;
cl
->
translateFn
=
rfbTranslateNone
;
cl
->
translateLookupTable
=
NULL
;
cl
->
translateLookupTable
=
NULL
;
LOCK
(
rfbClientListMutex
);
LOCK
(
rfbClientListMutex
);
IF_PTHREADS
(
cl
->
refCount
=
0
);
IF_PTHREADS
(
cl
->
refCount
=
0
);
cl
->
next
=
rfbScreen
->
rfbC
lientHead
;
cl
->
next
=
rfbScreen
->
c
lientHead
;
cl
->
prev
=
NULL
;
cl
->
prev
=
NULL
;
if
(
rfbScreen
->
rfbC
lientHead
)
if
(
rfbScreen
->
c
lientHead
)
rfbScreen
->
rfbC
lientHead
->
prev
=
cl
;
rfbScreen
->
c
lientHead
->
prev
=
cl
;
rfbScreen
->
rfbC
lientHead
=
cl
;
rfbScreen
->
c
lientHead
=
cl
;
UNLOCK
(
rfbClientListMutex
);
UNLOCK
(
rfbClientListMutex
);
#ifdef LIBVNCSERVER_HAVE_LIBJPEG
#ifdef LIBVNCSERVER_HAVE_LIBJPEG
...
@@ -345,7 +345,7 @@ rfbNewTCPOrUDPClient(rfbScreen,sock,isUDP)
...
@@ -345,7 +345,7 @@ rfbNewTCPOrUDPClient(rfbScreen,sock,isUDP)
sprintf
(
pv
,
rfbProtocolVersionFormat
,
rfbProtocolMajorVersion
,
sprintf
(
pv
,
rfbProtocolVersionFormat
,
rfbProtocolMajorVersion
,
rfbProtocolMinorVersion
);
rfbProtocolMinorVersion
);
if
(
WriteExact
(
cl
,
pv
,
sz_rfbProtocolVersionMsg
)
<
0
)
{
if
(
rfb
WriteExact
(
cl
,
pv
,
sz_rfbProtocolVersionMsg
)
<
0
)
{
rfbLogPerror
(
"rfbNewClient: write"
);
rfbLogPerror
(
"rfbNewClient: write"
);
rfbCloseClient
(
cl
);
rfbCloseClient
(
cl
);
/* TODO: memory leak here (cl is never freed)
/* TODO: memory leak here (cl is never freed)
...
@@ -357,7 +357,7 @@ rfbNewTCPOrUDPClient(rfbScreen,sock,isUDP)
...
@@ -357,7 +357,7 @@ rfbNewTCPOrUDPClient(rfbScreen,sock,isUDP)
}
}
cl
->
clientData
=
NULL
;
cl
->
clientData
=
NULL
;
cl
->
clientGoneHook
=
d
oNothingWithClient
;
cl
->
clientGoneHook
=
rfbD
oNothingWithClient
;
switch
(
cl
->
screen
->
newClientHook
(
cl
))
{
switch
(
cl
->
screen
->
newClientHook
(
cl
))
{
case
RFB_CLIENT_ON_HOLD
:
case
RFB_CLIENT_ON_HOLD
:
cl
->
onHold
=
TRUE
;
cl
->
onHold
=
TRUE
;
...
@@ -406,7 +406,7 @@ rfbClientConnectionGone(cl)
...
@@ -406,7 +406,7 @@ rfbClientConnectionGone(cl)
if
(
cl
->
prev
)
if
(
cl
->
prev
)
cl
->
prev
->
next
=
cl
->
next
;
cl
->
prev
->
next
=
cl
->
next
;
else
else
cl
->
screen
->
rfbC
lientHead
=
cl
->
next
;
cl
->
screen
->
c
lientHead
=
cl
->
next
;
if
(
cl
->
next
)
if
(
cl
->
next
)
cl
->
next
->
prev
=
cl
->
prev
;
cl
->
next
->
prev
=
cl
->
prev
;
...
@@ -512,7 +512,7 @@ rfbProcessClientProtocolVersion(cl)
...
@@ -512,7 +512,7 @@ rfbProcessClientProtocolVersion(cl)
int
n
,
major_
,
minor_
;
int
n
,
major_
,
minor_
;
char
failureReason
[
256
];
char
failureReason
[
256
];
if
((
n
=
ReadExact
(
cl
,
pv
,
sz_rfbProtocolVersionMsg
))
<=
0
)
{
if
((
n
=
rfb
ReadExact
(
cl
,
pv
,
sz_rfbProtocolVersionMsg
))
<=
0
)
{
if
(
n
==
0
)
if
(
n
==
0
)
rfbLog
(
"rfbProcessClientProtocolVersion: client gone
\n
"
);
rfbLog
(
"rfbProcessClientProtocolVersion: client gone
\n
"
);
else
else
...
@@ -572,7 +572,7 @@ rfbClientConnFailed(cl, reason)
...
@@ -572,7 +572,7 @@ rfbClientConnFailed(cl, reason)
((
uint32_t
*
)
buf
)[
1
]
=
Swap32IfLE
(
len
);
((
uint32_t
*
)
buf
)[
1
]
=
Swap32IfLE
(
len
);
memcpy
(
buf
+
8
,
reason
,
len
);
memcpy
(
buf
+
8
,
reason
,
len
);
if
(
WriteExact
(
cl
,
buf
,
8
+
len
)
<
0
)
if
(
rfb
WriteExact
(
cl
,
buf
,
8
+
len
)
<
0
)
rfbLogPerror
(
"rfbClientConnFailed: write"
);
rfbLogPerror
(
"rfbClientConnFailed: write"
);
free
(
buf
);
free
(
buf
);
rfbCloseClient
(
cl
);
rfbCloseClient
(
cl
);
...
@@ -595,7 +595,7 @@ rfbProcessClientInitMessage(cl)
...
@@ -595,7 +595,7 @@ rfbProcessClientInitMessage(cl)
rfbClientIteratorPtr
iterator
;
rfbClientIteratorPtr
iterator
;
rfbClientPtr
otherCl
;
rfbClientPtr
otherCl
;
if
((
n
=
ReadExact
(
cl
,
(
char
*
)
&
ci
,
sz_rfbClientInitMsg
))
<=
0
)
{
if
((
n
=
rfb
ReadExact
(
cl
,
(
char
*
)
&
ci
,
sz_rfbClientInitMsg
))
<=
0
)
{
if
(
n
==
0
)
if
(
n
==
0
)
rfbLog
(
"rfbProcessClientInitMessage: client gone
\n
"
);
rfbLog
(
"rfbProcessClientInitMessage: client gone
\n
"
);
else
else
...
@@ -606,7 +606,7 @@ rfbProcessClientInitMessage(cl)
...
@@ -606,7 +606,7 @@ rfbProcessClientInitMessage(cl)
si
->
framebufferWidth
=
Swap16IfLE
(
cl
->
screen
->
width
);
si
->
framebufferWidth
=
Swap16IfLE
(
cl
->
screen
->
width
);
si
->
framebufferHeight
=
Swap16IfLE
(
cl
->
screen
->
height
);
si
->
framebufferHeight
=
Swap16IfLE
(
cl
->
screen
->
height
);
si
->
format
=
cl
->
screen
->
rfbS
erverFormat
;
si
->
format
=
cl
->
screen
->
s
erverFormat
;
si
->
format
.
redMax
=
Swap16IfLE
(
si
->
format
.
redMax
);
si
->
format
.
redMax
=
Swap16IfLE
(
si
->
format
.
redMax
);
si
->
format
.
greenMax
=
Swap16IfLE
(
si
->
format
.
greenMax
);
si
->
format
.
greenMax
=
Swap16IfLE
(
si
->
format
.
greenMax
);
si
->
format
.
blueMax
=
Swap16IfLE
(
si
->
format
.
blueMax
);
si
->
format
.
blueMax
=
Swap16IfLE
(
si
->
format
.
blueMax
);
...
@@ -618,7 +618,7 @@ rfbProcessClientInitMessage(cl)
...
@@ -618,7 +618,7 @@ rfbProcessClientInitMessage(cl)
len
=
strlen
(
buf
+
sz_rfbServerInitMsg
);
len
=
strlen
(
buf
+
sz_rfbServerInitMsg
);
si
->
nameLength
=
Swap32IfLE
(
len
);
si
->
nameLength
=
Swap32IfLE
(
len
);
if
(
WriteExact
(
cl
,
buf
,
sz_rfbServerInitMsg
+
len
)
<
0
)
{
if
(
rfb
WriteExact
(
cl
,
buf
,
sz_rfbServerInitMsg
+
len
)
<
0
)
{
rfbLogPerror
(
"rfbProcessClientInitMessage: write"
);
rfbLogPerror
(
"rfbProcessClientInitMessage: write"
);
rfbCloseClient
(
cl
);
rfbCloseClient
(
cl
);
return
;
return
;
...
@@ -627,9 +627,9 @@ rfbProcessClientInitMessage(cl)
...
@@ -627,9 +627,9 @@ rfbProcessClientInitMessage(cl)
cl
->
state
=
RFB_NORMAL
;
cl
->
state
=
RFB_NORMAL
;
if
(
!
cl
->
reverseConnection
&&
if
(
!
cl
->
reverseConnection
&&
(
cl
->
screen
->
rfbNeverShared
||
(
!
cl
->
screen
->
rfbA
lwaysShared
&&
!
ci
.
shared
)))
{
(
cl
->
screen
->
neverShared
||
(
!
cl
->
screen
->
a
lwaysShared
&&
!
ci
.
shared
)))
{
if
(
cl
->
screen
->
rfbD
ontDisconnect
)
{
if
(
cl
->
screen
->
d
ontDisconnect
)
{
iterator
=
rfbGetClientIterator
(
cl
->
screen
);
iterator
=
rfbGetClientIterator
(
cl
->
screen
);
while
((
otherCl
=
rfbClientIteratorNext
(
iterator
))
!=
NULL
)
{
while
((
otherCl
=
rfbClientIteratorNext
(
iterator
))
!=
NULL
)
{
if
((
otherCl
!=
cl
)
&&
(
otherCl
->
state
==
RFB_NORMAL
))
{
if
((
otherCl
!=
cl
)
&&
(
otherCl
->
state
==
RFB_NORMAL
))
{
...
@@ -688,7 +688,7 @@ rfbProcessClientNormalMessage(cl)
...
@@ -688,7 +688,7 @@ rfbProcessClientNormalMessage(cl)
rfbClientToServerMsg
msg
;
rfbClientToServerMsg
msg
;
char
*
str
;
char
*
str
;
if
((
n
=
ReadExact
(
cl
,
(
char
*
)
&
msg
,
1
))
<=
0
)
{
if
((
n
=
rfb
ReadExact
(
cl
,
(
char
*
)
&
msg
,
1
))
<=
0
)
{
if
(
n
!=
0
)
if
(
n
!=
0
)
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
rfbCloseClient
(
cl
);
rfbCloseClient
(
cl
);
...
@@ -699,7 +699,7 @@ rfbProcessClientNormalMessage(cl)
...
@@ -699,7 +699,7 @@ rfbProcessClientNormalMessage(cl)
case
rfbSetPixelFormat
:
case
rfbSetPixelFormat
:
if
((
n
=
ReadExact
(
cl
,
((
char
*
)
&
msg
)
+
1
,
if
((
n
=
rfb
ReadExact
(
cl
,
((
char
*
)
&
msg
)
+
1
,
sz_rfbSetPixelFormatMsg
-
1
))
<=
0
)
{
sz_rfbSetPixelFormatMsg
-
1
))
<=
0
)
{
if
(
n
!=
0
)
if
(
n
!=
0
)
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
...
@@ -725,7 +725,7 @@ rfbProcessClientNormalMessage(cl)
...
@@ -725,7 +725,7 @@ rfbProcessClientNormalMessage(cl)
case
rfbFixColourMapEntries
:
case
rfbFixColourMapEntries
:
if
((
n
=
ReadExact
(
cl
,
((
char
*
)
&
msg
)
+
1
,
if
((
n
=
rfb
ReadExact
(
cl
,
((
char
*
)
&
msg
)
+
1
,
sz_rfbFixColourMapEntriesMsg
-
1
))
<=
0
)
{
sz_rfbFixColourMapEntriesMsg
-
1
))
<=
0
)
{
if
(
n
!=
0
)
if
(
n
!=
0
)
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
...
@@ -743,7 +743,7 @@ rfbProcessClientNormalMessage(cl)
...
@@ -743,7 +743,7 @@ rfbProcessClientNormalMessage(cl)
int
i
;
int
i
;
uint32_t
enc
;
uint32_t
enc
;
if
((
n
=
ReadExact
(
cl
,
((
char
*
)
&
msg
)
+
1
,
if
((
n
=
rfb
ReadExact
(
cl
,
((
char
*
)
&
msg
)
+
1
,
sz_rfbSetEncodingsMsg
-
1
))
<=
0
)
{
sz_rfbSetEncodingsMsg
-
1
))
<=
0
)
{
if
(
n
!=
0
)
if
(
n
!=
0
)
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
...
@@ -761,7 +761,7 @@ rfbProcessClientNormalMessage(cl)
...
@@ -761,7 +761,7 @@ rfbProcessClientNormalMessage(cl)
cl
->
useNewFBSize
=
FALSE
;
cl
->
useNewFBSize
=
FALSE
;
for
(
i
=
0
;
i
<
msg
.
se
.
nEncodings
;
i
++
)
{
for
(
i
=
0
;
i
<
msg
.
se
.
nEncodings
;
i
++
)
{
if
((
n
=
ReadExact
(
cl
,
(
char
*
)
&
enc
,
4
))
<=
0
)
{
if
((
n
=
rfb
ReadExact
(
cl
,
(
char
*
)
&
enc
,
4
))
<=
0
)
{
if
(
n
!=
0
)
if
(
n
!=
0
)
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
rfbCloseClient
(
cl
);
rfbCloseClient
(
cl
);
...
@@ -915,7 +915,7 @@ rfbProcessClientNormalMessage(cl)
...
@@ -915,7 +915,7 @@ rfbProcessClientNormalMessage(cl)
{
{
sraRegionPtr
tmpRegion
;
sraRegionPtr
tmpRegion
;
if
((
n
=
ReadExact
(
cl
,
((
char
*
)
&
msg
)
+
1
,
if
((
n
=
rfb
ReadExact
(
cl
,
((
char
*
)
&
msg
)
+
1
,
sz_rfbFramebufferUpdateRequestMsg
-
1
))
<=
0
)
{
sz_rfbFramebufferUpdateRequestMsg
-
1
))
<=
0
)
{
if
(
n
!=
0
)
if
(
n
!=
0
)
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
...
@@ -962,9 +962,9 @@ rfbProcessClientNormalMessage(cl)
...
@@ -962,9 +962,9 @@ rfbProcessClientNormalMessage(cl)
case
rfbKeyEvent
:
case
rfbKeyEvent
:
cl
->
rfbK
eyEventsRcvd
++
;
cl
->
k
eyEventsRcvd
++
;
if
((
n
=
ReadExact
(
cl
,
((
char
*
)
&
msg
)
+
1
,
if
((
n
=
rfb
ReadExact
(
cl
,
((
char
*
)
&
msg
)
+
1
,
sz_rfbKeyEventMsg
-
1
))
<=
0
)
{
sz_rfbKeyEventMsg
-
1
))
<=
0
)
{
if
(
n
!=
0
)
if
(
n
!=
0
)
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
...
@@ -981,9 +981,9 @@ rfbProcessClientNormalMessage(cl)
...
@@ -981,9 +981,9 @@ rfbProcessClientNormalMessage(cl)
case
rfbPointerEvent
:
case
rfbPointerEvent
:
cl
->
rfbP
ointerEventsRcvd
++
;
cl
->
p
ointerEventsRcvd
++
;
if
((
n
=
ReadExact
(
cl
,
((
char
*
)
&
msg
)
+
1
,
if
((
n
=
rfb
ReadExact
(
cl
,
((
char
*
)
&
msg
)
+
1
,
sz_rfbPointerEventMsg
-
1
))
<=
0
)
{
sz_rfbPointerEventMsg
-
1
))
<=
0
)
{
if
(
n
!=
0
)
if
(
n
!=
0
)
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
...
@@ -1009,7 +1009,7 @@ rfbProcessClientNormalMessage(cl)
...
@@ -1009,7 +1009,7 @@ rfbProcessClientNormalMessage(cl)
case
rfbClientCutText
:
case
rfbClientCutText
:
if
((
n
=
ReadExact
(
cl
,
((
char
*
)
&
msg
)
+
1
,
if
((
n
=
rfb
ReadExact
(
cl
,
((
char
*
)
&
msg
)
+
1
,
sz_rfbClientCutTextMsg
-
1
))
<=
0
)
{
sz_rfbClientCutTextMsg
-
1
))
<=
0
)
{
if
(
n
!=
0
)
if
(
n
!=
0
)
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
...
@@ -1021,7 +1021,7 @@ rfbProcessClientNormalMessage(cl)
...
@@ -1021,7 +1021,7 @@ rfbProcessClientNormalMessage(cl)
str
=
(
char
*
)
malloc
(
msg
.
cct
.
length
);
str
=
(
char
*
)
malloc
(
msg
.
cct
.
length
);
if
((
n
=
ReadExact
(
cl
,
str
,
msg
.
cct
.
length
))
<=
0
)
{
if
((
n
=
rfb
ReadExact
(
cl
,
str
,
msg
.
cct
.
length
))
<=
0
)
{
if
(
n
!=
0
)
if
(
n
!=
0
)
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
rfbLogPerror
(
"rfbProcessClientNormalMessage: read"
);
free
(
str
);
free
(
str
);
...
@@ -1081,7 +1081,7 @@ rfbSendFramebufferUpdate(cl, givenUpdateRegion)
...
@@ -1081,7 +1081,7 @@ rfbSendFramebufferUpdate(cl, givenUpdateRegion)
LOCK
(
cl
->
updateMutex
);
LOCK
(
cl
->
updateMutex
);
cl
->
newFBSizePending
=
FALSE
;
cl
->
newFBSizePending
=
FALSE
;
UNLOCK
(
cl
->
updateMutex
);
UNLOCK
(
cl
->
updateMutex
);
cl
->
rfbF
ramebufferUpdateMessagesSent
++
;
cl
->
f
ramebufferUpdateMessagesSent
++
;
fu
->
type
=
rfbFramebufferUpdate
;
fu
->
type
=
rfbFramebufferUpdate
;
fu
->
nRects
=
Swap16IfLE
(
1
);
fu
->
nRects
=
Swap16IfLE
(
1
);
cl
->
ublen
=
sz_rfbFramebufferUpdateMsg
;
cl
->
ublen
=
sz_rfbFramebufferUpdateMsg
;
...
@@ -1211,7 +1211,7 @@ rfbSendFramebufferUpdate(cl, givenUpdateRegion)
...
@@ -1211,7 +1211,7 @@ rfbSendFramebufferUpdate(cl, givenUpdateRegion)
* Now send the update.
* Now send the update.
*/
*/
cl
->
rfbF
ramebufferUpdateMessagesSent
++
;
cl
->
f
ramebufferUpdateMessagesSent
++
;
if
(
cl
->
preferredEncoding
==
rfbEncodingCoRRE
)
{
if
(
cl
->
preferredEncoding
==
rfbEncodingCoRRE
)
{
nUpdateRegionRects
=
0
;
nUpdateRegionRects
=
0
;
...
@@ -1315,7 +1315,7 @@ rfbSendFramebufferUpdate(cl, givenUpdateRegion)
...
@@ -1315,7 +1315,7 @@ rfbSendFramebufferUpdate(cl, givenUpdateRegion)
int
w
=
rect
.
x2
-
x
;
int
w
=
rect
.
x2
-
x
;
int
h
=
rect
.
y2
-
y
;
int
h
=
rect
.
y2
-
y
;
cl
->
r
fbR
awBytesEquivalent
+=
(
sz_rfbFramebufferUpdateRectHeader
cl
->
rawBytesEquivalent
+=
(
sz_rfbFramebufferUpdateRectHeader
+
w
*
(
cl
->
format
.
bitsPerPixel
/
8
)
*
h
);
+
w
*
(
cl
->
format
.
bitsPerPixel
/
8
)
*
h
);
switch
(
cl
->
preferredEncoding
)
{
switch
(
cl
->
preferredEncoding
)
{
...
@@ -1438,8 +1438,8 @@ rfbSendCopyRegion(cl, reg, dx, dy)
...
@@ -1438,8 +1438,8 @@ rfbSendCopyRegion(cl, reg, dx, dy)
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
(
char
*
)
&
cr
,
sz_rfbCopyRect
);
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
(
char
*
)
&
cr
,
sz_rfbCopyRect
);
cl
->
ublen
+=
sz_rfbCopyRect
;
cl
->
ublen
+=
sz_rfbCopyRect
;
cl
->
r
fbR
ectanglesSent
[
rfbEncodingCopyRect
]
++
;
cl
->
rectanglesSent
[
rfbEncodingCopyRect
]
++
;
cl
->
rfbB
ytesSent
[
rfbEncodingCopyRect
]
cl
->
b
ytesSent
[
rfbEncodingCopyRect
]
+=
sz_rfbFramebufferUpdateRectHeader
+
sz_rfbCopyRect
;
+=
sz_rfbFramebufferUpdateRectHeader
+
sz_rfbCopyRect
;
}
}
...
@@ -1477,8 +1477,8 @@ rfbSendRectEncodingRaw(cl, x, y, w, h)
...
@@ -1477,8 +1477,8 @@ rfbSendRectEncodingRaw(cl, x, y, w, h)
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
(
char
*
)
&
rect
,
sz_rfbFramebufferUpdateRectHeader
);
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
(
char
*
)
&
rect
,
sz_rfbFramebufferUpdateRectHeader
);
cl
->
ublen
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
ublen
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
r
fbR
ectanglesSent
[
rfbEncodingRaw
]
++
;
cl
->
rectanglesSent
[
rfbEncodingRaw
]
++
;
cl
->
rfbB
ytesSent
[
rfbEncodingRaw
]
cl
->
b
ytesSent
[
rfbEncodingRaw
]
+=
sz_rfbFramebufferUpdateRectHeader
+
bytesPerLine
*
h
;
+=
sz_rfbFramebufferUpdateRectHeader
+
bytesPerLine
*
h
;
nlines
=
(
UPDATE_BUF_SIZE
-
cl
->
ublen
)
/
bytesPerLine
;
nlines
=
(
UPDATE_BUF_SIZE
-
cl
->
ublen
)
/
bytesPerLine
;
...
@@ -1488,7 +1488,7 @@ rfbSendRectEncodingRaw(cl, x, y, w, h)
...
@@ -1488,7 +1488,7 @@ rfbSendRectEncodingRaw(cl, x, y, w, h)
nlines
=
h
;
nlines
=
h
;
(
*
cl
->
translateFn
)(
cl
->
translateLookupTable
,
(
*
cl
->
translateFn
)(
cl
->
translateLookupTable
,
&
(
cl
->
screen
->
rfbS
erverFormat
),
&
(
cl
->
screen
->
s
erverFormat
),
&
cl
->
format
,
fbptr
,
&
cl
->
updateBuf
[
cl
->
ublen
],
&
cl
->
format
,
fbptr
,
&
cl
->
updateBuf
[
cl
->
ublen
],
cl
->
screen
->
paddedWidthInBytes
,
w
,
nlines
);
cl
->
screen
->
paddedWidthInBytes
,
w
,
nlines
);
...
@@ -1544,8 +1544,8 @@ rfbSendLastRectMarker(cl)
...
@@ -1544,8 +1544,8 @@ rfbSendLastRectMarker(cl)
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
(
char
*
)
&
rect
,
sz_rfbFramebufferUpdateRectHeader
);
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
(
char
*
)
&
rect
,
sz_rfbFramebufferUpdateRectHeader
);
cl
->
ublen
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
ublen
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
rfbL
astRectMarkersSent
++
;
cl
->
l
astRectMarkersSent
++
;
cl
->
rfbL
astRectBytesSent
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
l
astRectBytesSent
+=
sz_rfbFramebufferUpdateRectHeader
;
return
TRUE
;
return
TRUE
;
}
}
...
@@ -1578,8 +1578,8 @@ rfbSendNewFBSize(cl, w, h)
...
@@ -1578,8 +1578,8 @@ rfbSendNewFBSize(cl, w, h)
sz_rfbFramebufferUpdateRectHeader
);
sz_rfbFramebufferUpdateRectHeader
);
cl
->
ublen
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
ublen
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
rfbL
astRectMarkersSent
++
;
cl
->
l
astRectMarkersSent
++
;
cl
->
rfbL
astRectBytesSent
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
l
astRectBytesSent
+=
sz_rfbFramebufferUpdateRectHeader
;
return
TRUE
;
return
TRUE
;
}
}
...
@@ -1597,7 +1597,7 @@ rfbSendUpdateBuf(cl)
...
@@ -1597,7 +1597,7 @@ rfbSendUpdateBuf(cl)
if
(
cl
->
sock
<
0
)
if
(
cl
->
sock
<
0
)
return
FALSE
;
return
FALSE
;
if
(
WriteExact
(
cl
,
cl
->
updateBuf
,
cl
->
ublen
)
<
0
)
{
if
(
rfb
WriteExact
(
cl
,
cl
->
updateBuf
,
cl
->
ublen
)
<
0
)
{
rfbLogPerror
(
"rfbSendUpdateBuf: write"
);
rfbLogPerror
(
"rfbSendUpdateBuf: write"
);
rfbCloseClient
(
cl
);
rfbCloseClient
(
cl
);
return
FALSE
;
return
FALSE
;
...
@@ -1648,7 +1648,7 @@ rfbSendSetColourMapEntries(cl, firstColour, nColours)
...
@@ -1648,7 +1648,7 @@ rfbSendSetColourMapEntries(cl, firstColour, nColours)
len
+=
nColours
*
3
*
2
;
len
+=
nColours
*
3
*
2
;
if
(
WriteExact
(
cl
,
buf
,
len
)
<
0
)
{
if
(
rfb
WriteExact
(
cl
,
buf
,
len
)
<
0
)
{
rfbLogPerror
(
"rfbSendSetColourMapEntries: write"
);
rfbLogPerror
(
"rfbSendSetColourMapEntries: write"
);
rfbCloseClient
(
cl
);
rfbCloseClient
(
cl
);
return
FALSE
;
return
FALSE
;
...
@@ -1670,7 +1670,7 @@ rfbSendBell(rfbScreenInfoPtr rfbScreen)
...
@@ -1670,7 +1670,7 @@ rfbSendBell(rfbScreenInfoPtr rfbScreen)
i
=
rfbGetClientIterator
(
rfbScreen
);
i
=
rfbGetClientIterator
(
rfbScreen
);
while
((
cl
=
rfbClientIteratorNext
(
i
)))
{
while
((
cl
=
rfbClientIteratorNext
(
i
)))
{
b
.
type
=
rfbBell
;
b
.
type
=
rfbBell
;
if
(
WriteExact
(
cl
,
(
char
*
)
&
b
,
sz_rfbBellMsg
)
<
0
)
{
if
(
rfb
WriteExact
(
cl
,
(
char
*
)
&
b
,
sz_rfbBellMsg
)
<
0
)
{
rfbLogPerror
(
"rfbSendBell: write"
);
rfbLogPerror
(
"rfbSendBell: write"
);
rfbCloseClient
(
cl
);
rfbCloseClient
(
cl
);
}
}
...
@@ -1694,13 +1694,13 @@ rfbSendServerCutText(rfbScreenInfoPtr rfbScreen,char *str, int len)
...
@@ -1694,13 +1694,13 @@ rfbSendServerCutText(rfbScreenInfoPtr rfbScreen,char *str, int len)
while
((
cl
=
rfbClientIteratorNext
(
iterator
))
!=
NULL
)
{
while
((
cl
=
rfbClientIteratorNext
(
iterator
))
!=
NULL
)
{
sct
.
type
=
rfbServerCutText
;
sct
.
type
=
rfbServerCutText
;
sct
.
length
=
Swap32IfLE
(
len
);
sct
.
length
=
Swap32IfLE
(
len
);
if
(
WriteExact
(
cl
,
(
char
*
)
&
sct
,
if
(
rfb
WriteExact
(
cl
,
(
char
*
)
&
sct
,
sz_rfbServerCutTextMsg
)
<
0
)
{
sz_rfbServerCutTextMsg
)
<
0
)
{
rfbLogPerror
(
"rfbSendServerCutText: write"
);
rfbLogPerror
(
"rfbSendServerCutText: write"
);
rfbCloseClient
(
cl
);
rfbCloseClient
(
cl
);
continue
;
continue
;
}
}
if
(
WriteExact
(
cl
,
str
,
len
)
<
0
)
{
if
(
rfb
WriteExact
(
cl
,
str
,
len
)
<
0
)
{
rfbLogPerror
(
"rfbSendServerCutText: write"
);
rfbLogPerror
(
"rfbSendServerCutText: write"
);
rfbCloseClient
(
cl
);
rfbCloseClient
(
cl
);
}
}
...
@@ -1793,13 +1793,13 @@ void rfbSendBackChannel(rfbScreenInfoPtr rfbScreen,char* str,int len)
...
@@ -1793,13 +1793,13 @@ void rfbSendBackChannel(rfbScreenInfoPtr rfbScreen,char* str,int len)
if
(
cl
->
enableBackChannel
)
{
if
(
cl
->
enableBackChannel
)
{
sct
.
type
=
rfbBackChannel
;
sct
.
type
=
rfbBackChannel
;
sct
.
length
=
Swap32IfLE
(
len
);
sct
.
length
=
Swap32IfLE
(
len
);
if
(
WriteExact
(
cl
,
(
char
*
)
&
sct
,
if
(
rfb
WriteExact
(
cl
,
(
char
*
)
&
sct
,
sz_rfbBackChannelMsg
)
<
0
)
{
sz_rfbBackChannelMsg
)
<
0
)
{
rfbLogPerror
(
"rfbSendBackChannel: write"
);
rfbLogPerror
(
"rfbSendBackChannel: write"
);
rfbCloseClient
(
cl
);
rfbCloseClient
(
cl
);
continue
;
continue
;
}
}
if
(
WriteExact
(
cl
,
str
,
len
)
<
0
)
{
if
(
rfb
WriteExact
(
cl
,
str
,
len
)
<
0
)
{
rfbLogPerror
(
"rfbSendBackChannel: write"
);
rfbLogPerror
(
"rfbSendBackChannel: write"
);
rfbCloseClient
(
cl
);
rfbCloseClient
(
cl
);
}
}
...
...
libvncserver/rre.c
View file @
97299606
...
@@ -84,7 +84,7 @@ rfbSendRectEncodingRRE(cl, x, y, w, h)
...
@@ -84,7 +84,7 @@ rfbSendRectEncodingRRE(cl, x, y, w, h)
}
}
(
*
cl
->
translateFn
)(
cl
->
translateLookupTable
,
(
*
cl
->
translateFn
)(
cl
->
translateLookupTable
,
&
(
cl
->
screen
->
rfbS
erverFormat
),
&
(
cl
->
screen
->
s
erverFormat
),
&
cl
->
format
,
fbptr
,
rreBeforeBuf
,
&
cl
->
format
,
fbptr
,
rreBeforeBuf
,
cl
->
screen
->
paddedWidthInBytes
,
w
,
h
);
cl
->
screen
->
paddedWidthInBytes
,
w
,
h
);
...
@@ -110,8 +110,8 @@ rfbSendRectEncodingRRE(cl, x, y, w, h)
...
@@ -110,8 +110,8 @@ rfbSendRectEncodingRRE(cl, x, y, w, h)
return
rfbSendRectEncodingRaw
(
cl
,
x
,
y
,
w
,
h
);
return
rfbSendRectEncodingRaw
(
cl
,
x
,
y
,
w
,
h
);
}
}
cl
->
r
fbR
ectanglesSent
[
rfbEncodingRRE
]
++
;
cl
->
rectanglesSent
[
rfbEncodingRRE
]
++
;
cl
->
rfbB
ytesSent
[
rfbEncodingRRE
]
+=
(
sz_rfbFramebufferUpdateRectHeader
cl
->
b
ytesSent
[
rfbEncodingRRE
]
+=
(
sz_rfbFramebufferUpdateRectHeader
+
sz_rfbRREHeader
+
rreAfterBufLen
);
+
sz_rfbRREHeader
+
rreAfterBufLen
);
if
(
cl
->
ublen
+
sz_rfbFramebufferUpdateRectHeader
+
sz_rfbRREHeader
if
(
cl
->
ublen
+
sz_rfbFramebufferUpdateRectHeader
+
sz_rfbRREHeader
...
...
libvncserver/selbox.c
View file @
97299606
...
@@ -209,10 +209,10 @@ int rfbSelectBox(rfbScreenInfoPtr rfbScreen,rfbFontDataPtr font,
...
@@ -209,10 +209,10 @@ int rfbSelectBox(rfbScreenInfoPtr rfbScreen,rfbFontDataPtr font,
int
bpp
=
rfbScreen
->
bitsPerPixel
/
8
;
int
bpp
=
rfbScreen
->
bitsPerPixel
/
8
;
char
*
frameBufferBackup
;
char
*
frameBufferBackup
;
void
*
screenDataBackup
=
rfbScreen
->
screenData
;
void
*
screenDataBackup
=
rfbScreen
->
screenData
;
KbdAddEventProcPtr
kbdAddEventBackup
=
rfbScreen
->
kbdAddEvent
;
rfb
KbdAddEventProcPtr
kbdAddEventBackup
=
rfbScreen
->
kbdAddEvent
;
PtrAddEventProcPtr
ptrAddEventBackup
=
rfbScreen
->
ptrAddEvent
;
rfb
PtrAddEventProcPtr
ptrAddEventBackup
=
rfbScreen
->
ptrAddEvent
;
GetCursorProcPtr
getCursorPtrBackup
=
rfbScreen
->
getCursorPtr
;
rfb
GetCursorProcPtr
getCursorPtrBackup
=
rfbScreen
->
getCursorPtr
;
DisplayHookPtr
displayHookBackup
=
rfbScreen
->
displayHook
;
rfb
DisplayHookPtr
displayHookBackup
=
rfbScreen
->
displayHook
;
rfbSelectData
selData
;
rfbSelectData
selData
;
int
i
,
j
,
k
;
int
i
,
j
,
k
;
int
fx1
,
fy1
,
fx2
,
fy2
;
/* for font bbox */
int
fx1
,
fy1
,
fx2
,
fy2
;
/* for font bbox */
...
...
libvncserver/sockets.c
View file @
97299606
...
@@ -139,8 +139,8 @@ rfbInitSockets(rfbScreenInfoPtr rfbScreen)
...
@@ -139,8 +139,8 @@ rfbInitSockets(rfbScreenInfoPtr rfbScreen)
rfbLog
(
"Autoprobing TCP port
\n
"
);
rfbLog
(
"Autoprobing TCP port
\n
"
);
for
(
i
=
5900
;
i
<
6000
;
i
++
)
{
for
(
i
=
5900
;
i
<
6000
;
i
++
)
{
if
((
rfbScreen
->
rfbListenSock
=
ListenOnTCPPort
(
i
))
>=
0
)
{
if
((
rfbScreen
->
listenSock
=
rfb
ListenOnTCPPort
(
i
))
>=
0
)
{
rfbScreen
->
rfbP
ort
=
i
;
rfbScreen
->
p
ort
=
i
;
break
;
break
;
}
}
}
}
...
@@ -150,28 +150,28 @@ rfbInitSockets(rfbScreenInfoPtr rfbScreen)
...
@@ -150,28 +150,28 @@ rfbInitSockets(rfbScreenInfoPtr rfbScreen)
return
;
return
;
}
}
rfbLog
(
"Autoprobing selected port %d
\n
"
,
rfbScreen
->
rfbP
ort
);
rfbLog
(
"Autoprobing selected port %d
\n
"
,
rfbScreen
->
p
ort
);
FD_ZERO
(
&
(
rfbScreen
->
allFds
));
FD_ZERO
(
&
(
rfbScreen
->
allFds
));
FD_SET
(
rfbScreen
->
rfbL
istenSock
,
&
(
rfbScreen
->
allFds
));
FD_SET
(
rfbScreen
->
l
istenSock
,
&
(
rfbScreen
->
allFds
));
rfbScreen
->
maxFd
=
rfbScreen
->
rfbL
istenSock
;
rfbScreen
->
maxFd
=
rfbScreen
->
l
istenSock
;
}
}
else
if
(
rfbScreen
->
rfbP
ort
>
0
)
{
else
if
(
rfbScreen
->
p
ort
>
0
)
{
rfbLog
(
"Listening for VNC connections on TCP port %d
\n
"
,
rfbScreen
->
rfbP
ort
);
rfbLog
(
"Listening for VNC connections on TCP port %d
\n
"
,
rfbScreen
->
p
ort
);
if
((
rfbScreen
->
rfbListenSock
=
ListenOnTCPPort
(
rfbScreen
->
rfbP
ort
))
<
0
)
{
if
((
rfbScreen
->
listenSock
=
rfbListenOnTCPPort
(
rfbScreen
->
p
ort
))
<
0
)
{
rfbLogPerror
(
"ListenOnTCPPort"
);
rfbLogPerror
(
"ListenOnTCPPort"
);
return
;
return
;
}
}
FD_ZERO
(
&
(
rfbScreen
->
allFds
));
FD_ZERO
(
&
(
rfbScreen
->
allFds
));
FD_SET
(
rfbScreen
->
rfbL
istenSock
,
&
(
rfbScreen
->
allFds
));
FD_SET
(
rfbScreen
->
l
istenSock
,
&
(
rfbScreen
->
allFds
));
rfbScreen
->
maxFd
=
rfbScreen
->
rfbL
istenSock
;
rfbScreen
->
maxFd
=
rfbScreen
->
l
istenSock
;
}
}
if
(
rfbScreen
->
udpPort
!=
0
)
{
if
(
rfbScreen
->
udpPort
!=
0
)
{
rfbLog
(
"rfbInitSockets: listening for input on UDP port %d
\n
"
,
rfbScreen
->
udpPort
);
rfbLog
(
"rfbInitSockets: listening for input on UDP port %d
\n
"
,
rfbScreen
->
udpPort
);
if
((
rfbScreen
->
udpSock
=
ListenOnUDPPort
(
rfbScreen
->
udpPort
))
<
0
)
{
if
((
rfbScreen
->
udpSock
=
rfb
ListenOnUDPPort
(
rfbScreen
->
udpPort
))
<
0
)
{
rfbLogPerror
(
"ListenOnUDPPort"
);
rfbLogPerror
(
"ListenOnUDPPort"
);
return
;
return
;
}
}
...
@@ -223,9 +223,9 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec)
...
@@ -223,9 +223,9 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec)
return
;
return
;
}
}
if
(
rfbScreen
->
rfbListenSock
!=
-
1
&&
FD_ISSET
(
rfbScreen
->
rfbL
istenSock
,
&
fds
))
{
if
(
rfbScreen
->
listenSock
!=
-
1
&&
FD_ISSET
(
rfbScreen
->
l
istenSock
,
&
fds
))
{
if
((
sock
=
accept
(
rfbScreen
->
rfbL
istenSock
,
if
((
sock
=
accept
(
rfbScreen
->
l
istenSock
,
(
struct
sockaddr
*
)
&
addr
,
&
addrlen
))
<
0
)
{
(
struct
sockaddr
*
)
&
addr
,
&
addrlen
))
<
0
)
{
rfbLogPerror
(
"rfbCheckFds: accept"
);
rfbLogPerror
(
"rfbCheckFds: accept"
);
return
;
return
;
...
@@ -260,7 +260,7 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec)
...
@@ -260,7 +260,7 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec)
rfbNewClient
(
rfbScreen
,
sock
);
rfbNewClient
(
rfbScreen
,
sock
);
FD_CLR
(
rfbScreen
->
rfbL
istenSock
,
&
fds
);
FD_CLR
(
rfbScreen
->
l
istenSock
,
&
fds
);
if
(
--
nfds
==
0
)
if
(
--
nfds
==
0
)
return
;
return
;
}
}
...
@@ -359,7 +359,7 @@ rfbConnect(rfbScreen, host, port)
...
@@ -359,7 +359,7 @@ rfbConnect(rfbScreen, host, port)
rfbLog
(
"Making connection to client on host %s port %d
\n
"
,
rfbLog
(
"Making connection to client on host %s port %d
\n
"
,
host
,
port
);
host
,
port
);
if
((
sock
=
ConnectToTcpAddr
(
host
,
port
))
<
0
)
{
if
((
sock
=
rfb
ConnectToTcpAddr
(
host
,
port
))
<
0
)
{
rfbLogPerror
(
"connection failed"
);
rfbLogPerror
(
"connection failed"
);
return
-
1
;
return
-
1
;
}
}
...
@@ -393,7 +393,7 @@ rfbConnect(rfbScreen, host, port)
...
@@ -393,7 +393,7 @@ rfbConnect(rfbScreen, host, port)
*/
*/
int
int
ReadExactTimeout
(
rfbClientPtr
cl
,
char
*
buf
,
int
len
,
int
timeout
)
rfb
ReadExactTimeout
(
rfbClientPtr
cl
,
char
*
buf
,
int
len
,
int
timeout
)
{
{
int
sock
=
cl
->
sock
;
int
sock
=
cl
->
sock
;
int
n
;
int
n
;
...
@@ -441,9 +441,9 @@ ReadExactTimeout(rfbClientPtr cl, char* buf, int len, int timeout)
...
@@ -441,9 +441,9 @@ ReadExactTimeout(rfbClientPtr cl, char* buf, int len, int timeout)
return
1
;
return
1
;
}
}
int
ReadExact
(
rfbClientPtr
cl
,
char
*
buf
,
int
len
)
int
rfb
ReadExact
(
rfbClientPtr
cl
,
char
*
buf
,
int
len
)
{
{
return
(
ReadExactTimeout
(
cl
,
buf
,
len
,
rfbMaxClientWait
));
return
(
rfb
ReadExactTimeout
(
cl
,
buf
,
len
,
rfbMaxClientWait
));
}
}
/*
/*
...
@@ -453,7 +453,7 @@ int ReadExact(rfbClientPtr cl,char* buf,int len)
...
@@ -453,7 +453,7 @@ int ReadExact(rfbClientPtr cl,char* buf,int len)
*/
*/
int
int
WriteExact
(
cl
,
buf
,
len
)
rfb
WriteExact
(
cl
,
buf
,
len
)
rfbClientPtr
cl
;
rfbClientPtr
cl
;
const
char
*
buf
;
const
char
*
buf
;
int
len
;
int
len
;
...
@@ -531,7 +531,7 @@ WriteExact(cl, buf, len)
...
@@ -531,7 +531,7 @@ WriteExact(cl, buf, len)
}
}
int
int
ListenOnTCPPort
(
port
)
rfb
ListenOnTCPPort
(
port
)
int
port
;
int
port
;
{
{
struct
sockaddr_in
addr
;
struct
sockaddr_in
addr
;
...
@@ -565,7 +565,7 @@ ListenOnTCPPort(port)
...
@@ -565,7 +565,7 @@ ListenOnTCPPort(port)
}
}
int
int
ConnectToTcpAddr
(
host
,
port
)
rfb
ConnectToTcpAddr
(
host
,
port
)
char
*
host
;
char
*
host
;
int
port
;
int
port
;
{
{
...
@@ -599,7 +599,7 @@ ConnectToTcpAddr(host, port)
...
@@ -599,7 +599,7 @@ ConnectToTcpAddr(host, port)
}
}
int
int
ListenOnUDPPort
(
port
)
rfb
ListenOnUDPPort
(
port
)
int
port
;
int
port
;
{
{
struct
sockaddr_in
addr
;
struct
sockaddr_in
addr
;
...
...
libvncserver/stats.c
View file @
97299606
...
@@ -44,19 +44,19 @@ rfbResetStats(rfbClientPtr cl)
...
@@ -44,19 +44,19 @@ rfbResetStats(rfbClientPtr cl)
{
{
int
i
;
int
i
;
for
(
i
=
0
;
i
<
MAX_ENCODINGS
;
i
++
)
{
for
(
i
=
0
;
i
<
MAX_ENCODINGS
;
i
++
)
{
cl
->
rfbB
ytesSent
[
i
]
=
0
;
cl
->
b
ytesSent
[
i
]
=
0
;
cl
->
r
fbR
ectanglesSent
[
i
]
=
0
;
cl
->
rectanglesSent
[
i
]
=
0
;
}
}
cl
->
rfbL
astRectMarkersSent
=
0
;
cl
->
l
astRectMarkersSent
=
0
;
cl
->
rfbL
astRectBytesSent
=
0
;
cl
->
l
astRectBytesSent
=
0
;
cl
->
rfbC
ursorShapeBytesSent
=
0
;
cl
->
c
ursorShapeBytesSent
=
0
;
cl
->
rfbC
ursorShapeUpdatesSent
=
0
;
cl
->
c
ursorShapeUpdatesSent
=
0
;
cl
->
rfbC
ursorPosBytesSent
=
0
;
cl
->
c
ursorPosBytesSent
=
0
;
cl
->
rfbC
ursorPosUpdatesSent
=
0
;
cl
->
c
ursorPosUpdatesSent
=
0
;
cl
->
rfbF
ramebufferUpdateMessagesSent
=
0
;
cl
->
f
ramebufferUpdateMessagesSent
=
0
;
cl
->
r
fbR
awBytesEquivalent
=
0
;
cl
->
rawBytesEquivalent
=
0
;
cl
->
rfbK
eyEventsRcvd
=
0
;
cl
->
k
eyEventsRcvd
=
0
;
cl
->
rfbP
ointerEventsRcvd
=
0
;
cl
->
p
ointerEventsRcvd
=
0
;
}
}
void
void
...
@@ -68,52 +68,52 @@ rfbPrintStats(rfbClientPtr cl)
...
@@ -68,52 +68,52 @@ rfbPrintStats(rfbClientPtr cl)
rfbLog
(
"Statistics:
\n
"
);
rfbLog
(
"Statistics:
\n
"
);
if
((
cl
->
rfbKeyEventsRcvd
!=
0
)
||
(
cl
->
rfbP
ointerEventsRcvd
!=
0
))
if
((
cl
->
keyEventsRcvd
!=
0
)
||
(
cl
->
p
ointerEventsRcvd
!=
0
))
rfbLog
(
" key events received %d, pointer events %d
\n
"
,
rfbLog
(
" key events received %d, pointer events %d
\n
"
,
cl
->
rfbKeyEventsRcvd
,
cl
->
rfbP
ointerEventsRcvd
);
cl
->
keyEventsRcvd
,
cl
->
p
ointerEventsRcvd
);
for
(
i
=
0
;
i
<
MAX_ENCODINGS
;
i
++
)
{
for
(
i
=
0
;
i
<
MAX_ENCODINGS
;
i
++
)
{
totalRectanglesSent
+=
cl
->
r
fbR
ectanglesSent
[
i
];
totalRectanglesSent
+=
cl
->
rectanglesSent
[
i
];
totalBytesSent
+=
cl
->
rfbB
ytesSent
[
i
];
totalBytesSent
+=
cl
->
b
ytesSent
[
i
];
}
}
totalRectanglesSent
+=
(
cl
->
rfbC
ursorShapeUpdatesSent
+
totalRectanglesSent
+=
(
cl
->
c
ursorShapeUpdatesSent
+
cl
->
rfbC
ursorPosUpdatesSent
+
cl
->
c
ursorPosUpdatesSent
+
cl
->
rfbL
astRectMarkersSent
);
cl
->
l
astRectMarkersSent
);
totalBytesSent
+=
(
cl
->
rfbC
ursorShapeBytesSent
+
totalBytesSent
+=
(
cl
->
c
ursorShapeBytesSent
+
cl
->
rfbC
ursorPosBytesSent
+
cl
->
c
ursorPosBytesSent
+
cl
->
rfbL
astRectBytesSent
);
cl
->
l
astRectBytesSent
);
rfbLog
(
" framebuffer updates %d, rectangles %d, bytes %d
\n
"
,
rfbLog
(
" framebuffer updates %d, rectangles %d, bytes %d
\n
"
,
cl
->
rfbF
ramebufferUpdateMessagesSent
,
totalRectanglesSent
,
cl
->
f
ramebufferUpdateMessagesSent
,
totalRectanglesSent
,
totalBytesSent
);
totalBytesSent
);
if
(
cl
->
rfbL
astRectMarkersSent
!=
0
)
if
(
cl
->
l
astRectMarkersSent
!=
0
)
rfbLog
(
" LastRect and NewFBSize markers %d, bytes %d
\n
"
,
rfbLog
(
" LastRect and NewFBSize markers %d, bytes %d
\n
"
,
cl
->
rfbLastRectMarkersSent
,
cl
->
rfbL
astRectBytesSent
);
cl
->
lastRectMarkersSent
,
cl
->
l
astRectBytesSent
);
if
(
cl
->
rfbC
ursorShapeUpdatesSent
!=
0
)
if
(
cl
->
c
ursorShapeUpdatesSent
!=
0
)
rfbLog
(
" cursor shape updates %d, bytes %d
\n
"
,
rfbLog
(
" cursor shape updates %d, bytes %d
\n
"
,
cl
->
rfbCursorShapeUpdatesSent
,
cl
->
rfbC
ursorShapeBytesSent
);
cl
->
cursorShapeUpdatesSent
,
cl
->
c
ursorShapeBytesSent
);
if
(
cl
->
rfbC
ursorPosUpdatesSent
!=
0
)
if
(
cl
->
c
ursorPosUpdatesSent
!=
0
)
rfbLog
(
" cursor position updates %d, bytes %d
\n
"
,
rfbLog
(
" cursor position updates %d, bytes %d
\n
"
,
cl
->
rfbCursorPosUpdatesSent
,
cl
->
rfbC
ursorPosBytesSent
);
cl
->
cursorPosUpdatesSent
,
cl
->
c
ursorPosBytesSent
);
for
(
i
=
0
;
i
<
MAX_ENCODINGS
;
i
++
)
{
for
(
i
=
0
;
i
<
MAX_ENCODINGS
;
i
++
)
{
if
(
cl
->
r
fbR
ectanglesSent
[
i
]
!=
0
)
if
(
cl
->
rectanglesSent
[
i
]
!=
0
)
rfbLog
(
" %s rectangles %d, bytes %d
\n
"
,
rfbLog
(
" %s rectangles %d, bytes %d
\n
"
,
encNames
[
i
],
cl
->
r
fbRectanglesSent
[
i
],
cl
->
rfbB
ytesSent
[
i
]);
encNames
[
i
],
cl
->
r
ectanglesSent
[
i
],
cl
->
b
ytesSent
[
i
]);
}
}
if
((
totalBytesSent
-
cl
->
rfbB
ytesSent
[
rfbEncodingCopyRect
])
!=
0
)
{
if
((
totalBytesSent
-
cl
->
b
ytesSent
[
rfbEncodingCopyRect
])
!=
0
)
{
rfbLog
(
" raw bytes equivalent %d, compression ratio %f
\n
"
,
rfbLog
(
" raw bytes equivalent %d, compression ratio %f
\n
"
,
cl
->
r
fbR
awBytesEquivalent
,
cl
->
rawBytesEquivalent
,
(
double
)
cl
->
r
fbR
awBytesEquivalent
(
double
)
cl
->
rawBytesEquivalent
/
(
double
)(
totalBytesSent
/
(
double
)(
totalBytesSent
-
cl
->
rfbB
ytesSent
[
rfbEncodingCopyRect
]
-
-
cl
->
b
ytesSent
[
rfbEncodingCopyRect
]
-
cl
->
rfbC
ursorShapeBytesSent
-
cl
->
c
ursorShapeBytesSent
-
cl
->
rfbC
ursorPosBytesSent
-
cl
->
c
ursorPosBytesSent
-
cl
->
rfbL
astRectBytesSent
));
cl
->
l
astRectBytesSent
));
}
}
}
}
libvncserver/tight.c
View file @
97299606
...
@@ -112,7 +112,7 @@ static char *tightAfterBuf = NULL;
...
@@ -112,7 +112,7 @@ static char *tightAfterBuf = NULL;
static
int
*
prevRowBuf
=
NULL
;
static
int
*
prevRowBuf
=
NULL
;
void
TightCleanup
()
void
rfb
TightCleanup
()
{
{
if
(
tightBeforeBufSize
)
{
if
(
tightBeforeBufSize
)
{
free
(
tightBeforeBuf
);
free
(
tightBeforeBuf
);
...
@@ -330,7 +330,7 @@ rfbSendRectEncodingTight(cl, x, y, w, h)
...
@@ -330,7 +330,7 @@ rfbSendRectEncodingTight(cl, x, y, w, h)
(
cl
->
screen
->
paddedWidthInBytes
*
y_best
)
+
(
cl
->
screen
->
paddedWidthInBytes
*
y_best
)
+
(
x_best
*
(
cl
->
screen
->
bitsPerPixel
/
8
)));
(
x_best
*
(
cl
->
screen
->
bitsPerPixel
/
8
)));
(
*
cl
->
translateFn
)(
cl
->
translateLookupTable
,
&
cl
->
screen
->
rfbS
erverFormat
,
(
*
cl
->
translateFn
)(
cl
->
translateLookupTable
,
&
cl
->
screen
->
s
erverFormat
,
&
cl
->
format
,
fbptr
,
tightBeforeBuf
,
&
cl
->
format
,
fbptr
,
tightBeforeBuf
,
cl
->
screen
->
paddedWidthInBytes
,
1
,
1
);
cl
->
screen
->
paddedWidthInBytes
,
1
,
1
);
...
@@ -451,7 +451,7 @@ ExtendSolidArea(cl, x, y, w, h, colorValue, x_ptr, y_ptr, w_ptr, h_ptr)
...
@@ -451,7 +451,7 @@ ExtendSolidArea(cl, x, y, w, h, colorValue, x_ptr, y_ptr, w_ptr, h_ptr)
static
rfbBool
CheckSolidTile
(
rfbClientPtr
cl
,
int
x
,
int
y
,
int
w
,
int
h
,
uint32_t
*
colorPtr
,
rfbBool
needSameColor
)
static
rfbBool
CheckSolidTile
(
rfbClientPtr
cl
,
int
x
,
int
y
,
int
w
,
int
h
,
uint32_t
*
colorPtr
,
rfbBool
needSameColor
)
{
{
switch
(
cl
->
screen
->
rfbS
erverFormat
.
bitsPerPixel
)
{
switch
(
cl
->
screen
->
s
erverFormat
.
bitsPerPixel
)
{
case
32
:
case
32
:
return
CheckSolidTile32
(
cl
,
x
,
y
,
w
,
h
,
colorPtr
,
needSameColor
);
return
CheckSolidTile32
(
cl
,
x
,
y
,
w
,
h
,
colorPtr
,
needSameColor
);
case
16
:
case
16
:
...
@@ -568,7 +568,7 @@ SendSubrect(cl, x, y, w, h)
...
@@ -568,7 +568,7 @@ SendSubrect(cl, x, y, w, h)
fbptr
=
(
cl
->
screen
->
frameBuffer
+
(
cl
->
screen
->
paddedWidthInBytes
*
y
)
fbptr
=
(
cl
->
screen
->
frameBuffer
+
(
cl
->
screen
->
paddedWidthInBytes
*
y
)
+
(
x
*
(
cl
->
screen
->
bitsPerPixel
/
8
)));
+
(
x
*
(
cl
->
screen
->
bitsPerPixel
/
8
)));
(
*
cl
->
translateFn
)(
cl
->
translateLookupTable
,
&
cl
->
screen
->
rfbS
erverFormat
,
(
*
cl
->
translateFn
)(
cl
->
translateLookupTable
,
&
cl
->
screen
->
s
erverFormat
,
&
cl
->
format
,
fbptr
,
tightBeforeBuf
,
&
cl
->
format
,
fbptr
,
tightBeforeBuf
,
cl
->
screen
->
paddedWidthInBytes
,
w
,
h
);
cl
->
screen
->
paddedWidthInBytes
,
w
,
h
);
...
@@ -646,8 +646,8 @@ SendTightHeader(cl, x, y, w, h)
...
@@ -646,8 +646,8 @@ SendTightHeader(cl, x, y, w, h)
sz_rfbFramebufferUpdateRectHeader
);
sz_rfbFramebufferUpdateRectHeader
);
cl
->
ublen
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
ublen
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
r
fbR
ectanglesSent
[
rfbEncodingTight
]
++
;
cl
->
rectanglesSent
[
rfbEncodingTight
]
++
;
cl
->
rfbB
ytesSent
[
rfbEncodingTight
]
+=
sz_rfbFramebufferUpdateRectHeader
;
cl
->
b
ytesSent
[
rfbEncodingTight
]
+=
sz_rfbFramebufferUpdateRectHeader
;
return
TRUE
;
return
TRUE
;
}
}
...
@@ -677,7 +677,7 @@ SendSolidRect(cl)
...
@@ -677,7 +677,7 @@ SendSolidRect(cl)
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
tightBeforeBuf
,
len
);
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
tightBeforeBuf
,
len
);
cl
->
ublen
+=
len
;
cl
->
ublen
+=
len
;
cl
->
rfbB
ytesSent
[
rfbEncodingTight
]
+=
len
+
1
;
cl
->
b
ytesSent
[
rfbEncodingTight
]
+=
len
+
1
;
return
TRUE
;
return
TRUE
;
}
}
...
@@ -720,7 +720,7 @@ SendMonoRect(cl, w, h)
...
@@ -720,7 +720,7 @@ SendMonoRect(cl, w, h)
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
tightAfterBuf
,
paletteLen
);
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
tightAfterBuf
,
paletteLen
);
cl
->
ublen
+=
paletteLen
;
cl
->
ublen
+=
paletteLen
;
cl
->
rfbB
ytesSent
[
rfbEncodingTight
]
+=
3
+
paletteLen
;
cl
->
b
ytesSent
[
rfbEncodingTight
]
+=
3
+
paletteLen
;
break
;
break
;
case
16
:
case
16
:
...
@@ -731,7 +731,7 @@ SendMonoRect(cl, w, h)
...
@@ -731,7 +731,7 @@ SendMonoRect(cl, w, h)
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
tightAfterBuf
,
4
);
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
tightAfterBuf
,
4
);
cl
->
ublen
+=
4
;
cl
->
ublen
+=
4
;
cl
->
rfbB
ytesSent
[
rfbEncodingTight
]
+=
7
;
cl
->
b
ytesSent
[
rfbEncodingTight
]
+=
7
;
break
;
break
;
default
:
default
:
...
@@ -739,7 +739,7 @@ SendMonoRect(cl, w, h)
...
@@ -739,7 +739,7 @@ SendMonoRect(cl, w, h)
cl
->
updateBuf
[
cl
->
ublen
++
]
=
(
char
)
monoBackground
;
cl
->
updateBuf
[
cl
->
ublen
++
]
=
(
char
)
monoBackground
;
cl
->
updateBuf
[
cl
->
ublen
++
]
=
(
char
)
monoForeground
;
cl
->
updateBuf
[
cl
->
ublen
++
]
=
(
char
)
monoForeground
;
cl
->
rfbB
ytesSent
[
rfbEncodingTight
]
+=
5
;
cl
->
b
ytesSent
[
rfbEncodingTight
]
+=
5
;
}
}
return
CompressData
(
cl
,
streamId
,
dataLen
,
return
CompressData
(
cl
,
streamId
,
dataLen
,
...
@@ -785,7 +785,7 @@ SendIndexedRect(cl, w, h)
...
@@ -785,7 +785,7 @@ SendIndexedRect(cl, w, h)
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
tightAfterBuf
,
paletteNumColors
*
entryLen
);
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
tightAfterBuf
,
paletteNumColors
*
entryLen
);
cl
->
ublen
+=
paletteNumColors
*
entryLen
;
cl
->
ublen
+=
paletteNumColors
*
entryLen
;
cl
->
rfbB
ytesSent
[
rfbEncodingTight
]
+=
3
+
paletteNumColors
*
entryLen
;
cl
->
b
ytesSent
[
rfbEncodingTight
]
+=
3
+
paletteNumColors
*
entryLen
;
break
;
break
;
case
16
:
case
16
:
...
@@ -798,7 +798,7 @@ SendIndexedRect(cl, w, h)
...
@@ -798,7 +798,7 @@ SendIndexedRect(cl, w, h)
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
tightAfterBuf
,
paletteNumColors
*
2
);
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
tightAfterBuf
,
paletteNumColors
*
2
);
cl
->
ublen
+=
paletteNumColors
*
2
;
cl
->
ublen
+=
paletteNumColors
*
2
;
cl
->
rfbB
ytesSent
[
rfbEncodingTight
]
+=
3
+
paletteNumColors
*
2
;
cl
->
b
ytesSent
[
rfbEncodingTight
]
+=
3
+
paletteNumColors
*
2
;
break
;
break
;
default
:
default
:
...
@@ -824,7 +824,7 @@ SendFullColorRect(cl, w, h)
...
@@ -824,7 +824,7 @@ SendFullColorRect(cl, w, h)
}
}
cl
->
updateBuf
[
cl
->
ublen
++
]
=
0x00
;
/* stream id = 0, no flushing, no filter */
cl
->
updateBuf
[
cl
->
ublen
++
]
=
0x00
;
/* stream id = 0, no flushing, no filter */
cl
->
rfbB
ytesSent
[
rfbEncodingTight
]
++
;
cl
->
b
ytesSent
[
rfbEncodingTight
]
++
;
if
(
usePixelFormat24
)
{
if
(
usePixelFormat24
)
{
Pack24
(
cl
,
tightBeforeBuf
,
&
cl
->
format
,
w
*
h
);
Pack24
(
cl
,
tightBeforeBuf
,
&
cl
->
format
,
w
*
h
);
...
@@ -858,7 +858,7 @@ SendGradientRect(cl, w, h)
...
@@ -858,7 +858,7 @@ SendGradientRect(cl, w, h)
cl
->
updateBuf
[
cl
->
ublen
++
]
=
(
streamId
|
rfbTightExplicitFilter
)
<<
4
;
cl
->
updateBuf
[
cl
->
ublen
++
]
=
(
streamId
|
rfbTightExplicitFilter
)
<<
4
;
cl
->
updateBuf
[
cl
->
ublen
++
]
=
rfbTightFilterGradient
;
cl
->
updateBuf
[
cl
->
ublen
++
]
=
rfbTightFilterGradient
;
cl
->
rfbB
ytesSent
[
rfbEncodingTight
]
+=
2
;
cl
->
b
ytesSent
[
rfbEncodingTight
]
+=
2
;
if
(
usePixelFormat24
)
{
if
(
usePixelFormat24
)
{
FilterGradient24
(
cl
,
tightBeforeBuf
,
&
cl
->
format
,
w
,
h
);
FilterGradient24
(
cl
,
tightBeforeBuf
,
&
cl
->
format
,
w
,
h
);
...
@@ -887,7 +887,7 @@ CompressData(cl, streamId, dataLen, zlibLevel, zlibStrategy)
...
@@ -887,7 +887,7 @@ CompressData(cl, streamId, dataLen, zlibLevel, zlibStrategy)
if
(
dataLen
<
TIGHT_MIN_TO_COMPRESS
)
{
if
(
dataLen
<
TIGHT_MIN_TO_COMPRESS
)
{
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
tightBeforeBuf
,
dataLen
);
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
tightBeforeBuf
,
dataLen
);
cl
->
ublen
+=
dataLen
;
cl
->
ublen
+=
dataLen
;
cl
->
rfbB
ytesSent
[
rfbEncodingTight
]
+=
dataLen
;
cl
->
b
ytesSent
[
rfbEncodingTight
]
+=
dataLen
;
return
TRUE
;
return
TRUE
;
}
}
...
@@ -938,15 +938,15 @@ static rfbBool SendCompressedData(cl, compressedLen)
...
@@ -938,15 +938,15 @@ static rfbBool SendCompressedData(cl, compressedLen)
int
i
,
portionLen
;
int
i
,
portionLen
;
cl
->
updateBuf
[
cl
->
ublen
++
]
=
compressedLen
&
0x7F
;
cl
->
updateBuf
[
cl
->
ublen
++
]
=
compressedLen
&
0x7F
;
cl
->
rfbB
ytesSent
[
rfbEncodingTight
]
++
;
cl
->
b
ytesSent
[
rfbEncodingTight
]
++
;
if
(
compressedLen
>
0x7F
)
{
if
(
compressedLen
>
0x7F
)
{
cl
->
updateBuf
[
cl
->
ublen
-
1
]
|=
0x80
;
cl
->
updateBuf
[
cl
->
ublen
-
1
]
|=
0x80
;
cl
->
updateBuf
[
cl
->
ublen
++
]
=
compressedLen
>>
7
&
0x7F
;
cl
->
updateBuf
[
cl
->
ublen
++
]
=
compressedLen
>>
7
&
0x7F
;
cl
->
rfbB
ytesSent
[
rfbEncodingTight
]
++
;
cl
->
b
ytesSent
[
rfbEncodingTight
]
++
;
if
(
compressedLen
>
0x3FFF
)
{
if
(
compressedLen
>
0x3FFF
)
{
cl
->
updateBuf
[
cl
->
ublen
-
1
]
|=
0x80
;
cl
->
updateBuf
[
cl
->
ublen
-
1
]
|=
0x80
;
cl
->
updateBuf
[
cl
->
ublen
++
]
=
compressedLen
>>
14
&
0xFF
;
cl
->
updateBuf
[
cl
->
ublen
++
]
=
compressedLen
>>
14
&
0xFF
;
cl
->
rfbB
ytesSent
[
rfbEncodingTight
]
++
;
cl
->
b
ytesSent
[
rfbEncodingTight
]
++
;
}
}
}
}
...
@@ -962,7 +962,7 @@ static rfbBool SendCompressedData(cl, compressedLen)
...
@@ -962,7 +962,7 @@ static rfbBool SendCompressedData(cl, compressedLen)
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
&
tightAfterBuf
[
i
],
portionLen
);
memcpy
(
&
cl
->
updateBuf
[
cl
->
ublen
],
&
tightAfterBuf
[
i
],
portionLen
);
cl
->
ublen
+=
portionLen
;
cl
->
ublen
+=
portionLen
;
}
}
cl
->
rfbB
ytesSent
[
rfbEncodingTight
]
+=
compressedLen
;
cl
->
b
ytesSent
[
rfbEncodingTight
]
+=
compressedLen
;
return
TRUE
;
return
TRUE
;
}
}
...
@@ -1181,7 +1181,7 @@ static void Pack24(cl, buf, fmt, count)
...
@@ -1181,7 +1181,7 @@ static void Pack24(cl, buf, fmt, count)
buf32
=
(
uint32_t
*
)
buf
;
buf32
=
(
uint32_t
*
)
buf
;
if
(
!
cl
->
screen
->
rfbS
erverFormat
.
bigEndian
==
!
fmt
->
bigEndian
)
{
if
(
!
cl
->
screen
->
s
erverFormat
.
bigEndian
==
!
fmt
->
bigEndian
)
{
r_shift
=
fmt
->
redShift
;
r_shift
=
fmt
->
redShift
;
g_shift
=
fmt
->
greenShift
;
g_shift
=
fmt
->
greenShift
;
b_shift
=
fmt
->
blueShift
;
b_shift
=
fmt
->
blueShift
;
...
@@ -1323,7 +1323,7 @@ FilterGradient24(cl, buf, fmt, w, h)
...
@@ -1323,7 +1323,7 @@ FilterGradient24(cl, buf, fmt, w, h)
buf32
=
(
uint32_t
*
)
buf
;
buf32
=
(
uint32_t
*
)
buf
;
memset
(
prevRowBuf
,
0
,
w
*
3
*
sizeof
(
int
));
memset
(
prevRowBuf
,
0
,
w
*
3
*
sizeof
(
int
));
if
(
!
cl
->
screen
->
rfbS
erverFormat
.
bigEndian
==
!
fmt
->
bigEndian
)
{
if
(
!
cl
->
screen
->
s
erverFormat
.
bigEndian
==
!
fmt
->
bigEndian
)
{
shiftBits
[
0
]
=
fmt
->
redShift
;
shiftBits
[
0
]
=
fmt
->
redShift
;
shiftBits
[
1
]
=
fmt
->
greenShift
;
shiftBits
[
1
]
=
fmt
->
greenShift
;
shiftBits
[
2
]
=
fmt
->
blueShift
;
shiftBits
[
2
]
=
fmt
->
blueShift
;
...
@@ -1384,7 +1384,7 @@ FilterGradient##bpp(cl, buf, fmt, w, h) \
...
@@ -1384,7 +1384,7 @@ FilterGradient##bpp(cl, buf, fmt, w, h) \
\
\
memset (prevRowBuf, 0, w * 3 * sizeof(int)); \
memset (prevRowBuf, 0, w * 3 * sizeof(int)); \
\
\
endianMismatch = (!cl->screen->
rfbS
erverFormat.bigEndian != !fmt->bigEndian); \
endianMismatch = (!cl->screen->
s
erverFormat.bigEndian != !fmt->bigEndian); \
\
\
maxColor[0] = fmt->redMax; \
maxColor[0] = fmt->redMax; \
maxColor[1] = fmt->greenMax; \
maxColor[1] = fmt->greenMax; \
...
@@ -1452,7 +1452,7 @@ DetectSmoothImage (cl, fmt, w, h)
...
@@ -1452,7 +1452,7 @@ DetectSmoothImage (cl, fmt, w, h)
{
{
long
avgError
;
long
avgError
;
if
(
cl
->
screen
->
rfbS
erverFormat
.
bitsPerPixel
==
8
||
fmt
->
bitsPerPixel
==
8
||
if
(
cl
->
screen
->
s
erverFormat
.
bitsPerPixel
==
8
||
fmt
->
bitsPerPixel
==
8
||
w
<
DETECT_MIN_WIDTH
||
h
<
DETECT_MIN_HEIGHT
)
{
w
<
DETECT_MIN_WIDTH
||
h
<
DETECT_MIN_HEIGHT
)
{
return
0
;
return
0
;
}
}
...
@@ -1564,7 +1564,7 @@ DetectSmoothImage##bpp (cl, fmt, w, h)
...
@@ -1564,7 +1564,7 @@ DetectSmoothImage##bpp (cl, fmt, w, h)
int sample, sum, left[3]; \
int sample, sum, left[3]; \
unsigned long avgError; \
unsigned long avgError; \
\
\
endianMismatch = (!cl->screen->
rfbS
erverFormat.bigEndian != !fmt->bigEndian); \
endianMismatch = (!cl->screen->
s
erverFormat.bigEndian != !fmt->bigEndian); \
\
\
maxColor[0] = fmt->redMax; \
maxColor[0] = fmt->redMax; \
maxColor[1] = fmt->greenMax; \
maxColor[1] = fmt->greenMax; \
...
@@ -1652,7 +1652,7 @@ SendJpegRect(cl, x, y, w, h, quality)
...
@@ -1652,7 +1652,7 @@ SendJpegRect(cl, x, y, w, h, quality)
JSAMPROW
rowPointer
[
1
];
JSAMPROW
rowPointer
[
1
];
int
dy
;
int
dy
;
if
(
cl
->
screen
->
rfbS
erverFormat
.
bitsPerPixel
==
8
)
if
(
cl
->
screen
->
s
erverFormat
.
bitsPerPixel
==
8
)
return
SendFullColorRect
(
cl
,
w
,
h
);
return
SendFullColorRect
(
cl
,
w
,
h
);
srcBuf
=
(
uint8_t
*
)
malloc
(
w
*
3
);
srcBuf
=
(
uint8_t
*
)
malloc
(
w
*
3
);
...
@@ -1698,7 +1698,7 @@ SendJpegRect(cl, x, y, w, h, quality)
...
@@ -1698,7 +1698,7 @@ SendJpegRect(cl, x, y, w, h, quality)
}
}
cl
->
updateBuf
[
cl
->
ublen
++
]
=
(
char
)(
rfbTightJpeg
<<
4
);
cl
->
updateBuf
[
cl
->
ublen
++
]
=
(
char
)(
rfbTightJpeg
<<
4
);
cl
->
rfbB
ytesSent
[
rfbEncodingTight
]
++
;
cl
->
b
ytesSent
[
rfbEncodingTight
]
++
;
return
SendCompressedData
(
cl
,
jpegDstDataLen
);
return
SendCompressedData
(
cl
,
jpegDstDataLen
);
}
}
...
@@ -1709,10 +1709,10 @@ PrepareRowForJpeg(cl, dst, x, y, count)
...
@@ -1709,10 +1709,10 @@ PrepareRowForJpeg(cl, dst, x, y, count)
uint8_t
*
dst
;
uint8_t
*
dst
;
int
x
,
y
,
count
;
int
x
,
y
,
count
;
{
{
if
(
cl
->
screen
->
rfbS
erverFormat
.
bitsPerPixel
==
32
)
{
if
(
cl
->
screen
->
s
erverFormat
.
bitsPerPixel
==
32
)
{
if
(
cl
->
screen
->
rfbS
erverFormat
.
redMax
==
0xFF
&&
if
(
cl
->
screen
->
s
erverFormat
.
redMax
==
0xFF
&&
cl
->
screen
->
rfbS
erverFormat
.
greenMax
==
0xFF
&&
cl
->
screen
->
s
erverFormat
.
greenMax
==
0xFF
&&
cl
->
screen
->
rfbS
erverFormat
.
blueMax
==
0xFF
)
{
cl
->
screen
->
s
erverFormat
.
blueMax
==
0xFF
)
{
PrepareRowForJpeg24
(
cl
,
dst
,
x
,
y
,
count
);
PrepareRowForJpeg24
(
cl
,
dst
,
x
,
y
,
count
);
}
else
{
}
else
{
PrepareRowForJpeg32
(
cl
,
dst
,
x
,
y
,
count
);
PrepareRowForJpeg32
(
cl
,
dst
,
x
,
y
,
count
);
...
@@ -1737,9 +1737,9 @@ PrepareRowForJpeg24(cl, dst, x, y, count)
...
@@ -1737,9 +1737,9 @@ PrepareRowForJpeg24(cl, dst, x, y, count)
while
(
count
--
)
{
while
(
count
--
)
{
pix
=
*
fbptr
++
;
pix
=
*
fbptr
++
;
*
dst
++
=
(
uint8_t
)(
pix
>>
cl
->
screen
->
rfbS
erverFormat
.
redShift
);
*
dst
++
=
(
uint8_t
)(
pix
>>
cl
->
screen
->
s
erverFormat
.
redShift
);
*
dst
++
=
(
uint8_t
)(
pix
>>
cl
->
screen
->
rfbS
erverFormat
.
greenShift
);
*
dst
++
=
(
uint8_t
)(
pix
>>
cl
->
screen
->
s
erverFormat
.
greenShift
);
*
dst
++
=
(
uint8_t
)(
pix
>>
cl
->
screen
->
rfbS
erverFormat
.
blueShift
);
*
dst
++
=
(
uint8_t
)(
pix
>>
cl
->
screen
->
s
erverFormat
.
blueShift
);
}
}
}
}
...
@@ -1763,18 +1763,18 @@ PrepareRowForJpeg##bpp(cl, dst, x, y, count)
...
@@ -1763,18 +1763,18 @@ PrepareRowForJpeg##bpp(cl, dst, x, y, count)
pix = *fbptr++; \
pix = *fbptr++; \
\
\
inRed = (int) \
inRed = (int) \
(pix >> cl->screen->
rfbServerFormat.redShift & cl->screen->rfbS
erverFormat.redMax); \
(pix >> cl->screen->
serverFormat.redShift & cl->screen->s
erverFormat.redMax); \
inGreen = (int) \
inGreen = (int) \
(pix >> cl->screen->
rfbServerFormat.greenShift & cl->screen->rfbS
erverFormat.greenMax); \
(pix >> cl->screen->
serverFormat.greenShift & cl->screen->s
erverFormat.greenMax); \
inBlue = (int) \
inBlue = (int) \
(pix >> cl->screen->
rfbServerFormat.blueShift & cl->screen->rfbS
erverFormat.blueMax); \
(pix >> cl->screen->
serverFormat.blueShift & cl->screen->s
erverFormat.blueMax); \
\
\
*dst++ = (uint8_t)((inRed * 255 + cl->screen->
rfbS
erverFormat.redMax / 2) / \
*dst++ = (uint8_t)((inRed * 255 + cl->screen->
s
erverFormat.redMax / 2) / \
cl->screen->
rfbS
erverFormat.redMax); \
cl->screen->
s
erverFormat.redMax); \
*dst++ = (uint8_t)((inGreen * 255 + cl->screen->
rfbS
erverFormat.greenMax / 2) / \
*dst++ = (uint8_t)((inGreen * 255 + cl->screen->
s
erverFormat.greenMax / 2) / \
cl->screen->
rfbS
erverFormat.greenMax); \
cl->screen->
s
erverFormat.greenMax); \
*dst++ = (uint8_t)((inBlue * 255 + cl->screen->
rfbS
erverFormat.blueMax / 2) / \
*dst++ = (uint8_t)((inBlue * 255 + cl->screen->
s
erverFormat.blueMax / 2) / \
cl->screen->
rfbS
erverFormat.blueMax); \
cl->screen->
s
erverFormat.blueMax); \
} \
} \
}
}
...
...
libvncserver/translate.c
View file @
97299606
...
@@ -252,16 +252,16 @@ rfbSetTranslateFunction(cl)
...
@@ -252,16 +252,16 @@ rfbSetTranslateFunction(cl)
* Check that bits per pixel values are valid
* Check that bits per pixel values are valid
*/
*/
if
((
cl
->
screen
->
rfbS
erverFormat
.
bitsPerPixel
!=
8
)
&&
if
((
cl
->
screen
->
s
erverFormat
.
bitsPerPixel
!=
8
)
&&
(
cl
->
screen
->
rfbS
erverFormat
.
bitsPerPixel
!=
16
)
&&
(
cl
->
screen
->
s
erverFormat
.
bitsPerPixel
!=
16
)
&&
#ifdef LIBVNCSERVER_ALLOW24BPP
#ifdef LIBVNCSERVER_ALLOW24BPP
(
cl
->
screen
->
rfbS
erverFormat
.
bitsPerPixel
!=
24
)
&&
(
cl
->
screen
->
s
erverFormat
.
bitsPerPixel
!=
24
)
&&
#endif
#endif
(
cl
->
screen
->
rfbS
erverFormat
.
bitsPerPixel
!=
32
))
(
cl
->
screen
->
s
erverFormat
.
bitsPerPixel
!=
32
))
{
{
rfbErr
(
"%s: server bits per pixel not 8, 16 or 32 (is %d)
\n
"
,
rfbErr
(
"%s: server bits per pixel not 8, 16 or 32 (is %d)
\n
"
,
"rfbSetTranslateFunction"
,
"rfbSetTranslateFunction"
,
cl
->
screen
->
rfbS
erverFormat
.
bitsPerPixel
);
cl
->
screen
->
s
erverFormat
.
bitsPerPixel
);
rfbCloseClient
(
cl
);
rfbCloseClient
(
cl
);
return
FALSE
;
return
FALSE
;
}
}
...
@@ -307,7 +307,7 @@ rfbSetTranslateFunction(cl)
...
@@ -307,7 +307,7 @@ rfbSetTranslateFunction(cl)
/* truecolour -> truecolour */
/* truecolour -> truecolour */
if
(
PF_EQ
(
cl
->
format
,
cl
->
screen
->
rfbS
erverFormat
))
{
if
(
PF_EQ
(
cl
->
format
,
cl
->
screen
->
s
erverFormat
))
{
/* client & server the same */
/* client & server the same */
...
@@ -316,36 +316,36 @@ rfbSetTranslateFunction(cl)
...
@@ -316,36 +316,36 @@ rfbSetTranslateFunction(cl)
return
TRUE
;
return
TRUE
;
}
}
if
((
cl
->
screen
->
rfbS
erverFormat
.
bitsPerPixel
<
16
)
||
if
((
cl
->
screen
->
s
erverFormat
.
bitsPerPixel
<
16
)
||
((
!
cl
->
screen
->
rfbS
erverFormat
.
trueColour
||
!
rfbEconomicTranslate
)
&&
((
!
cl
->
screen
->
s
erverFormat
.
trueColour
||
!
rfbEconomicTranslate
)
&&
(
cl
->
screen
->
rfbS
erverFormat
.
bitsPerPixel
==
16
)))
{
(
cl
->
screen
->
s
erverFormat
.
bitsPerPixel
==
16
)))
{
/* we can use a single lookup table for <= 16 bpp */
/* we can use a single lookup table for <= 16 bpp */
cl
->
translateFn
=
rfbTranslateWithSingleTableFns
cl
->
translateFn
=
rfbTranslateWithSingleTableFns
[
BPP2OFFSET
(
cl
->
screen
->
rfbS
erverFormat
.
bitsPerPixel
)]
[
BPP2OFFSET
(
cl
->
screen
->
s
erverFormat
.
bitsPerPixel
)]
[
BPP2OFFSET
(
cl
->
format
.
bitsPerPixel
)];
[
BPP2OFFSET
(
cl
->
format
.
bitsPerPixel
)];
if
(
cl
->
screen
->
rfbS
erverFormat
.
trueColour
)
if
(
cl
->
screen
->
s
erverFormat
.
trueColour
)
(
*
rfbInitTrueColourSingleTableFns
(
*
rfbInitTrueColourSingleTableFns
[
BPP2OFFSET
(
cl
->
format
.
bitsPerPixel
)])
(
&
cl
->
translateLookupTable
,
[
BPP2OFFSET
(
cl
->
format
.
bitsPerPixel
)])
(
&
cl
->
translateLookupTable
,
&
(
cl
->
screen
->
rfbS
erverFormat
),
&
cl
->
format
);
&
(
cl
->
screen
->
s
erverFormat
),
&
cl
->
format
);
else
else
(
*
rfbInitColourMapSingleTableFns
(
*
rfbInitColourMapSingleTableFns
[
BPP2OFFSET
(
cl
->
format
.
bitsPerPixel
)])
(
&
cl
->
translateLookupTable
,
[
BPP2OFFSET
(
cl
->
format
.
bitsPerPixel
)])
(
&
cl
->
translateLookupTable
,
&
(
cl
->
screen
->
rfbS
erverFormat
),
&
cl
->
format
,
&
cl
->
screen
->
colourMap
);
&
(
cl
->
screen
->
s
erverFormat
),
&
cl
->
format
,
&
cl
->
screen
->
colourMap
);
}
else
{
}
else
{
/* otherwise we use three separate tables for red, green and blue */
/* otherwise we use three separate tables for red, green and blue */
cl
->
translateFn
=
rfbTranslateWithRGBTablesFns
cl
->
translateFn
=
rfbTranslateWithRGBTablesFns
[
BPP2OFFSET
(
cl
->
screen
->
rfbS
erverFormat
.
bitsPerPixel
)]
[
BPP2OFFSET
(
cl
->
screen
->
s
erverFormat
.
bitsPerPixel
)]
[
BPP2OFFSET
(
cl
->
format
.
bitsPerPixel
)];
[
BPP2OFFSET
(
cl
->
format
.
bitsPerPixel
)];
(
*
rfbInitTrueColourRGBTablesFns
(
*
rfbInitTrueColourRGBTablesFns
[
BPP2OFFSET
(
cl
->
format
.
bitsPerPixel
)])
(
&
cl
->
translateLookupTable
,
[
BPP2OFFSET
(
cl
->
format
.
bitsPerPixel
)])
(
&
cl
->
translateLookupTable
,
&
(
cl
->
screen
->
rfbS
erverFormat
),
&
cl
->
format
);
&
(
cl
->
screen
->
s
erverFormat
),
&
cl
->
format
);
}
}
return
TRUE
;
return
TRUE
;
...
@@ -396,7 +396,7 @@ rfbSetClientColourMapBGR233(cl)
...
@@ -396,7 +396,7 @@ rfbSetClientColourMapBGR233(cl)
len
+=
256
*
3
*
2
;
len
+=
256
*
3
*
2
;
if
(
WriteExact
(
cl
,
buf
,
len
)
<
0
)
{
if
(
rfb
WriteExact
(
cl
,
buf
,
len
)
<
0
)
{
rfbLogPerror
(
"rfbSetClientColourMapBGR233: write"
);
rfbLogPerror
(
"rfbSetClientColourMapBGR233: write"
);
rfbCloseClient
(
cl
);
rfbCloseClient
(
cl
);
return
FALSE
;
return
FALSE
;
...
@@ -419,7 +419,7 @@ rfbSetClientColourMap(cl, firstColour, nColours)
...
@@ -419,7 +419,7 @@ rfbSetClientColourMap(cl, firstColour, nColours)
int
firstColour
;
int
firstColour
;
int
nColours
;
int
nColours
;
{
{
if
(
cl
->
screen
->
rfbS
erverFormat
.
trueColour
||
!
cl
->
readyForSetColourMapEntries
)
{
if
(
cl
->
screen
->
s
erverFormat
.
trueColour
||
!
cl
->
readyForSetColourMapEntries
)
{
return
TRUE
;
return
TRUE
;
}
}
...
@@ -430,7 +430,7 @@ rfbSetClientColourMap(cl, firstColour, nColours)
...
@@ -430,7 +430,7 @@ rfbSetClientColourMap(cl, firstColour, nColours)
if
(
cl
->
format
.
trueColour
)
{
if
(
cl
->
format
.
trueColour
)
{
(
*
rfbInitColourMapSingleTableFns
(
*
rfbInitColourMapSingleTableFns
[
BPP2OFFSET
(
cl
->
format
.
bitsPerPixel
)])
(
&
cl
->
translateLookupTable
,
[
BPP2OFFSET
(
cl
->
format
.
bitsPerPixel
)])
(
&
cl
->
translateLookupTable
,
&
cl
->
screen
->
rfbS
erverFormat
,
&
cl
->
format
,
&
cl
->
screen
->
colourMap
);
&
cl
->
screen
->
s
erverFormat
,
&
cl
->
format
,
&
cl
->
screen
->
colourMap
);
sraRgnDestroy
(
cl
->
modifiedRegion
);
sraRgnDestroy
(
cl
->
modifiedRegion
);
cl
->
modifiedRegion
=
cl
->
modifiedRegion
=
...
...
libvncserver/vncauth.c
View file @
97299606
...
@@ -62,7 +62,7 @@ static unsigned char fixedkey[8] = {23,82,107,6,35,78,88,7};
...
@@ -62,7 +62,7 @@ static unsigned char fixedkey[8] = {23,82,107,6,35,78,88,7};
*/
*/
int
int
vnc
EncryptAndStorePasswd
(
char
*
passwd
,
char
*
fname
)
rfb
EncryptAndStorePasswd
(
char
*
passwd
,
char
*
fname
)
{
{
FILE
*
fp
;
FILE
*
fp
;
unsigned
int
i
;
unsigned
int
i
;
...
@@ -88,8 +88,8 @@ vncEncryptAndStorePasswd(char *passwd, char *fname)
...
@@ -88,8 +88,8 @@ vncEncryptAndStorePasswd(char *passwd, char *fname)
/* Do encryption in-place - this way we overwrite our copy of the plaintext
/* Do encryption in-place - this way we overwrite our copy of the plaintext
password */
password */
desk
ey
(
fixedkey
,
EN0
);
rfbDesK
ey
(
fixedkey
,
EN0
);
d
es
(
encryptedPasswd
,
encryptedPasswd
);
rfbD
es
(
encryptedPasswd
,
encryptedPasswd
);
for
(
i
=
0
;
i
<
8
;
i
++
)
{
for
(
i
=
0
;
i
<
8
;
i
++
)
{
putc
(
encryptedPasswd
[
i
],
fp
);
putc
(
encryptedPasswd
[
i
],
fp
);
...
@@ -107,7 +107,7 @@ vncEncryptAndStorePasswd(char *passwd, char *fname)
...
@@ -107,7 +107,7 @@ vncEncryptAndStorePasswd(char *passwd, char *fname)
*/
*/
char
*
char
*
vnc
DecryptPasswdFromFile
(
char
*
fname
)
rfb
DecryptPasswdFromFile
(
char
*
fname
)
{
{
FILE
*
fp
;
FILE
*
fp
;
int
i
,
ch
;
int
i
,
ch
;
...
@@ -126,8 +126,8 @@ vncDecryptPasswdFromFile(char *fname)
...
@@ -126,8 +126,8 @@ vncDecryptPasswdFromFile(char *fname)
fclose
(
fp
);
fclose
(
fp
);
desk
ey
(
fixedkey
,
DE1
);
rfbDesK
ey
(
fixedkey
,
DE1
);
d
es
(
passwd
,
passwd
);
rfbD
es
(
passwd
,
passwd
);
passwd
[
8
]
=
0
;
passwd
[
8
]
=
0
;
...
@@ -141,7 +141,7 @@ vncDecryptPasswdFromFile(char *fname)
...
@@ -141,7 +141,7 @@ vncDecryptPasswdFromFile(char *fname)
*/
*/
void
void
vnc
RandomBytes
(
unsigned
char
*
bytes
)
rfb
RandomBytes
(
unsigned
char
*
bytes
)
{
{
int
i
;
int
i
;
static
rfbBool
s_srandom_called
=
FALSE
;
static
rfbBool
s_srandom_called
=
FALSE
;
...
@@ -162,7 +162,7 @@ vncRandomBytes(unsigned char *bytes)
...
@@ -162,7 +162,7 @@ vncRandomBytes(unsigned char *bytes)
*/
*/
void
void
vnc
EncryptBytes
(
unsigned
char
*
bytes
,
char
*
passwd
)
rfb
EncryptBytes
(
unsigned
char
*
bytes
,
char
*
passwd
)
{
{
unsigned
char
key
[
8
];
unsigned
char
key
[
8
];
unsigned
int
i
;
unsigned
int
i
;
...
@@ -177,9 +177,9 @@ vncEncryptBytes(unsigned char *bytes, char *passwd)
...
@@ -177,9 +177,9 @@ vncEncryptBytes(unsigned char *bytes, char *passwd)
}
}
}
}
desk
ey
(
key
,
EN0
);
rfbDesK
ey
(
key
,
EN0
);
for
(
i
=
0
;
i
<
CHALLENGESIZE
;
i
+=
8
)
{
for
(
i
=
0
;
i
<
CHALLENGESIZE
;
i
+=
8
)
{
d
es
(
bytes
+
i
,
bytes
+
i
);
rfbD
es
(
bytes
+
i
,
bytes
+
i
);
}
}
}
}
libvncserver/zlib.c
View file @
97299606
...
@@ -122,7 +122,7 @@ rfbSendOneRectEncodingZlib(cl, x, y, w, h)
...
@@ -122,7 +122,7 @@ rfbSendOneRectEncodingZlib(cl, x, y, w, h)
/*
/*
* Convert pixel data to client format.
* Convert pixel data to client format.
*/
*/
(
*
cl
->
translateFn
)(
cl
->
translateLookupTable
,
&
cl
->
screen
->
rfbS
erverFormat
,
(
*
cl
->
translateFn
)(
cl
->
translateLookupTable
,
&
cl
->
screen
->
s
erverFormat
,
&
cl
->
format
,
fbptr
,
zlibBeforeBuf
,
&
cl
->
format
,
fbptr
,
zlibBeforeBuf
,
cl
->
screen
->
paddedWidthInBytes
,
w
,
h
);
cl
->
screen
->
paddedWidthInBytes
,
w
,
h
);
...
@@ -174,8 +174,8 @@ rfbSendOneRectEncodingZlib(cl, x, y, w, h)
...
@@ -174,8 +174,8 @@ rfbSendOneRectEncodingZlib(cl, x, y, w, h)
*/
*/
/* Update statics */
/* Update statics */
cl
->
r
fbR
ectanglesSent
[
rfbEncodingZlib
]
++
;
cl
->
rectanglesSent
[
rfbEncodingZlib
]
++
;
cl
->
rfbB
ytesSent
[
rfbEncodingZlib
]
+=
(
sz_rfbFramebufferUpdateRectHeader
cl
->
b
ytesSent
[
rfbEncodingZlib
]
+=
(
sz_rfbFramebufferUpdateRectHeader
+
sz_rfbZlibHeader
+
zlibAfterBufLen
);
+
sz_rfbZlibHeader
+
zlibAfterBufLen
);
if
(
cl
->
ublen
+
sz_rfbFramebufferUpdateRectHeader
+
sz_rfbZlibHeader
if
(
cl
->
ublen
+
sz_rfbFramebufferUpdateRectHeader
+
sz_rfbZlibHeader
...
...
libvncserver/zrle.c
View file @
97299606
...
@@ -33,7 +33,7 @@
...
@@ -33,7 +33,7 @@
+ (cl->screen->paddedWidthInBytes * ty) \
+ (cl->screen->paddedWidthInBytes * ty) \
+ (tx * (cl->screen->bitsPerPixel / 8))); \
+ (tx * (cl->screen->bitsPerPixel / 8))); \
\
\
(*cl->translateFn)(cl->translateLookupTable, &cl->screen->
rfbS
erverFormat,\
(*cl->translateFn)(cl->translateLookupTable, &cl->screen->
s
erverFormat,\
&cl->format, fbptr, (char*)buf, \
&cl->format, fbptr, (char*)buf, \
cl->screen->paddedWidthInBytes, tw, th); }
cl->screen->paddedWidthInBytes, tw, th); }
...
@@ -123,8 +123,8 @@ rfbBool rfbSendRectEncodingZRLE(rfbClientPtr cl, int x, int y, int w, int h)
...
@@ -123,8 +123,8 @@ rfbBool rfbSendRectEncodingZRLE(rfbClientPtr cl, int x, int y, int w, int h)
break
;
break
;
}
}
cl
->
r
fbR
ectanglesSent
[
rfbEncodingZRLE
]
++
;
cl
->
rectanglesSent
[
rfbEncodingZRLE
]
++
;
cl
->
rfbB
ytesSent
[
rfbEncodingZRLE
]
+=
(
sz_rfbFramebufferUpdateRectHeader
cl
->
b
ytesSent
[
rfbEncodingZRLE
]
+=
(
sz_rfbFramebufferUpdateRectHeader
+
sz_rfbZRLEHeader
+
ZRLE_BUFFER_LENGTH
(
&
zos
->
out
));
+
sz_rfbZRLEHeader
+
ZRLE_BUFFER_LENGTH
(
&
zos
->
out
));
if
(
cl
->
ublen
+
sz_rfbFramebufferUpdateRectHeader
+
sz_rfbZRLEHeader
if
(
cl
->
ublen
+
sz_rfbFramebufferUpdateRectHeader
+
sz_rfbZRLEHeader
...
...
rfb/rfb.h
View file @
97299606
...
@@ -112,15 +112,15 @@ enum rfbNewClientAction {
...
@@ -112,15 +112,15 @@ enum rfbNewClientAction {
RFB_CLIENT_REFUSE
RFB_CLIENT_REFUSE
};
};
typedef
void
(
*
KbdAddEventProcPtr
)
(
rfbBool
down
,
rfbKeySym
keySym
,
struct
_rfbClientRec
*
cl
);
typedef
void
(
*
rfb
KbdAddEventProcPtr
)
(
rfbBool
down
,
rfbKeySym
keySym
,
struct
_rfbClientRec
*
cl
);
typedef
void
(
*
KbdReleaseAllKeysProcPtr
)
(
struct
_rfbClientRec
*
cl
);
typedef
void
(
*
rfb
KbdReleaseAllKeysProcPtr
)
(
struct
_rfbClientRec
*
cl
);
typedef
void
(
*
PtrAddEventProcPtr
)
(
int
buttonMask
,
int
x
,
int
y
,
struct
_rfbClientRec
*
cl
);
typedef
void
(
*
rfb
PtrAddEventProcPtr
)
(
int
buttonMask
,
int
x
,
int
y
,
struct
_rfbClientRec
*
cl
);
typedef
void
(
*
SetXCutTextProcPtr
)
(
char
*
str
,
int
len
,
struct
_rfbClientRec
*
cl
);
typedef
void
(
*
rfb
SetXCutTextProcPtr
)
(
char
*
str
,
int
len
,
struct
_rfbClientRec
*
cl
);
typedef
struct
rfbCursor
*
(
*
GetCursorProcPtr
)
(
struct
_rfbClientRec
*
pScreen
);
typedef
struct
rfbCursor
*
(
*
rfb
GetCursorProcPtr
)
(
struct
_rfbClientRec
*
pScreen
);
typedef
rfbBool
(
*
SetTranslateFunctionProcPtr
)(
struct
_rfbClientRec
*
cl
);
typedef
rfbBool
(
*
rfb
SetTranslateFunctionProcPtr
)(
struct
_rfbClientRec
*
cl
);
typedef
rfbBool
(
*
PasswordCheckProcPtr
)(
struct
_rfbClientRec
*
cl
,
const
char
*
encryptedPassWord
,
int
len
);
typedef
rfbBool
(
*
rfb
PasswordCheckProcPtr
)(
struct
_rfbClientRec
*
cl
,
const
char
*
encryptedPassWord
,
int
len
);
typedef
enum
rfbNewClientAction
(
*
NewClientHookPtr
)(
struct
_rfbClientRec
*
cl
);
typedef
enum
rfbNewClientAction
(
*
rfb
NewClientHookPtr
)(
struct
_rfbClientRec
*
cl
);
typedef
void
(
*
DisplayHookPtr
)(
struct
_rfbClientRec
*
cl
);
typedef
void
(
*
rfb
DisplayHookPtr
)(
struct
_rfbClientRec
*
cl
);
typedef
struct
{
typedef
struct
{
uint32_t
count
;
uint32_t
count
;
...
@@ -198,14 +198,14 @@ typedef struct _rfbScreenInfo
...
@@ -198,14 +198,14 @@ typedef struct _rfbScreenInfo
/* additions by libvncserver */
/* additions by libvncserver */
rfbPixelFormat
rfbS
erverFormat
;
rfbPixelFormat
s
erverFormat
;
rfbColourMap
colourMap
;
/* set this if rfbServerFormat.trueColour==FALSE */
rfbColourMap
colourMap
;
/* set this if rfbServerFormat.trueColour==FALSE */
const
char
*
desktopName
;
const
char
*
desktopName
;
char
rfbT
hisHost
[
255
];
char
t
hisHost
[
255
];
rfbBool
autoPort
;
rfbBool
autoPort
;
int
rfbP
ort
;
int
p
ort
;
SOCKET
rfbL
istenSock
;
SOCKET
l
istenSock
;
int
maxSock
;
int
maxSock
;
int
maxFd
;
int
maxFd
;
fd_set
allFds
;
fd_set
allFds
;
...
@@ -220,7 +220,7 @@ typedef struct _rfbScreenInfo
...
@@ -220,7 +220,7 @@ typedef struct _rfbScreenInfo
rfbBool
udpSockConnected
;
rfbBool
udpSockConnected
;
struct
sockaddr_in
udpRemoteAddr
;
struct
sockaddr_in
udpRemoteAddr
;
int
rfbM
axClientWait
;
int
m
axClientWait
;
/* http stuff */
/* http stuff */
rfbBool
httpInitDone
;
rfbBool
httpInitDone
;
...
@@ -230,22 +230,24 @@ typedef struct _rfbScreenInfo
...
@@ -230,22 +230,24 @@ typedef struct _rfbScreenInfo
SOCKET
httpListenSock
;
SOCKET
httpListenSock
;
SOCKET
httpSock
;
SOCKET
httpSock
;
PasswordCheckProcPtr
passwordCheck
;
rfb
PasswordCheckProcPtr
passwordCheck
;
void
*
rfbA
uthPasswdData
;
void
*
a
uthPasswdData
;
/* If rfbAuthPasswdData is given a list, this is the first
/* If rfbAuthPasswdData is given a list, this is the first
view only password. */
view only password. */
int
rfbA
uthPasswdFirstViewOnly
;
int
a
uthPasswdFirstViewOnly
;
/* send only this many rectangles in one update */
/* send only this many rectangles in one update */
int
maxRectsPerUpdate
;
int
maxRectsPerUpdate
;
/* this is the amount of milliseconds to wait at least before sending
/* this is the amount of milliseconds to wait at least before sending
* an update. */
* an update. */
int
rfbDeferUpdateTime
;
int
deferUpdateTime
;
char
*
rfbScreen
;
#ifdef TODELETE
rfbBool
rfbAlwaysShared
;
char
*
screen
;
rfbBool
rfbNeverShared
;
#endif
rfbBool
rfbDontDisconnect
;
rfbBool
alwaysShared
;
struct
_rfbClientRec
*
rfbClientHead
;
rfbBool
neverShared
;
rfbBool
dontDisconnect
;
struct
_rfbClientRec
*
clientHead
;
/* cursor */
/* cursor */
int
cursorX
,
cursorY
,
oldCursorX
,
oldCursorY
,
underCursorBufferLen
;
int
cursorX
,
cursorY
,
oldCursorX
,
oldCursorY
,
underCursorBufferLen
;
...
@@ -257,17 +259,17 @@ typedef struct _rfbScreenInfo
...
@@ -257,17 +259,17 @@ typedef struct _rfbScreenInfo
* The buffer will not be freed by
* The buffer will not be freed by
*/
*/
char
*
frameBuffer
;
char
*
frameBuffer
;
KbdAddEventProcPtr
kbdAddEvent
;
rfb
KbdAddEventProcPtr
kbdAddEvent
;
KbdReleaseAllKeysProcPtr
kbdReleaseAllKeys
;
rfb
KbdReleaseAllKeysProcPtr
kbdReleaseAllKeys
;
PtrAddEventProcPtr
ptrAddEvent
;
rfb
PtrAddEventProcPtr
ptrAddEvent
;
SetXCutTextProcPtr
setXCutText
;
rfb
SetXCutTextProcPtr
setXCutText
;
GetCursorProcPtr
getCursorPtr
;
rfb
GetCursorProcPtr
getCursorPtr
;
SetTranslateFunctionProcPtr
setTranslateFunction
;
rfb
SetTranslateFunctionProcPtr
setTranslateFunction
;
/* newClientHook is called just after a new client is created */
/* newClientHook is called just after a new client is created */
NewClientHookPtr
newClientHook
;
rfb
NewClientHookPtr
newClientHook
;
/* displayHook is called just before a frame buffer update */
/* displayHook is called just before a frame buffer update */
DisplayHookPtr
displayHook
;
rfb
DisplayHookPtr
displayHook
;
#ifdef LIBVNCSERVER_HAVE_LIBPTHREAD
#ifdef LIBVNCSERVER_HAVE_LIBPTHREAD
MUTEX
(
cursorMutex
);
MUTEX
(
cursorMutex
);
...
@@ -409,18 +411,18 @@ typedef struct _rfbClientRec {
...
@@ -409,18 +411,18 @@ typedef struct _rfbClientRec {
/* statistics */
/* statistics */
int
rfbB
ytesSent
[
MAX_ENCODINGS
];
int
b
ytesSent
[
MAX_ENCODINGS
];
int
r
fbR
ectanglesSent
[
MAX_ENCODINGS
];
int
rectanglesSent
[
MAX_ENCODINGS
];
int
rfbL
astRectMarkersSent
;
int
l
astRectMarkersSent
;
int
rfbL
astRectBytesSent
;
int
l
astRectBytesSent
;
int
rfbC
ursorShapeBytesSent
;
int
c
ursorShapeBytesSent
;
int
rfbC
ursorShapeUpdatesSent
;
int
c
ursorShapeUpdatesSent
;
int
rfbC
ursorPosBytesSent
;
int
c
ursorPosBytesSent
;
int
rfbC
ursorPosUpdatesSent
;
int
c
ursorPosUpdatesSent
;
int
rfbF
ramebufferUpdateMessagesSent
;
int
f
ramebufferUpdateMessagesSent
;
int
r
fbR
awBytesEquivalent
;
int
rawBytesEquivalent
;
int
rfbK
eyEventsRcvd
;
int
k
eyEventsRcvd
;
int
rfbP
ointerEventsRcvd
;
int
p
ointerEventsRcvd
;
#ifdef LIBVNCSERVER_HAVE_LIBZ
#ifdef LIBVNCSERVER_HAVE_LIBZ
/* zlib encoding -- necessary compression state info per client */
/* zlib encoding -- necessary compression state info per client */
...
@@ -520,20 +522,17 @@ extern int rfbMaxClientWait;
...
@@ -520,20 +522,17 @@ extern int rfbMaxClientWait;
extern
void
rfbInitSockets
(
rfbScreenInfoPtr
rfbScreen
);
extern
void
rfbInitSockets
(
rfbScreenInfoPtr
rfbScreen
);
extern
void
rfbDisconnectUDPSock
(
rfbScreenInfoPtr
rfbScreen
);
extern
void
rfbDisconnectUDPSock
(
rfbScreenInfoPtr
rfbScreen
);
extern
void
rfbCloseClient
(
rfbClientPtr
cl
);
extern
void
rfbCloseClient
(
rfbClientPtr
cl
);
extern
int
ReadExact
(
rfbClientPtr
cl
,
char
*
buf
,
int
len
);
extern
int
rfb
ReadExact
(
rfbClientPtr
cl
,
char
*
buf
,
int
len
);
extern
int
ReadExactTimeout
(
rfbClientPtr
cl
,
char
*
buf
,
int
len
,
int
timeout
);
extern
int
rfb
ReadExactTimeout
(
rfbClientPtr
cl
,
char
*
buf
,
int
len
,
int
timeout
);
extern
int
WriteExact
(
rfbClientPtr
cl
,
const
char
*
buf
,
int
len
);
extern
int
rfb
WriteExact
(
rfbClientPtr
cl
,
const
char
*
buf
,
int
len
);
extern
void
rfbCheckFds
(
rfbScreenInfoPtr
rfbScreen
,
long
usec
);
extern
void
rfbCheckFds
(
rfbScreenInfoPtr
rfbScreen
,
long
usec
);
extern
int
rfbConnect
(
rfbScreenInfoPtr
rfbScreen
,
char
*
host
,
int
port
);
extern
int
rfbConnect
(
rfbScreenInfoPtr
rfbScreen
,
char
*
host
,
int
port
);
extern
int
ConnectToTcpAddr
(
char
*
host
,
int
port
);
extern
int
rfb
ConnectToTcpAddr
(
char
*
host
,
int
port
);
extern
int
ListenOnTCPPort
(
int
port
);
extern
int
rfb
ListenOnTCPPort
(
int
port
);
extern
int
ListenOnUDPPort
(
int
port
);
extern
int
rfb
ListenOnUDPPort
(
int
port
);
/* rfbserver.c */
/* rfbserver.c */
extern
rfbClientPtr
pointerClient
;
/* Routines to iterate over the client list in a thread-safe way.
/* Routines to iterate over the client list in a thread-safe way.
Only a single iterator can be in use at a time process-wide. */
Only a single iterator can be in use at a time process-wide. */
typedef
struct
rfbClientIterator
*
rfbClientIteratorPtr
;
typedef
struct
rfbClientIterator
*
rfbClientIteratorPtr
;
...
@@ -583,8 +582,8 @@ extern void rfbSetClientColourMaps(rfbScreenInfoPtr rfbScreen, int firstColour,
...
@@ -583,8 +582,8 @@ extern void rfbSetClientColourMaps(rfbScreenInfoPtr rfbScreen, int firstColour,
/* httpd.c */
/* httpd.c */
extern
void
h
ttpInitSockets
(
rfbScreenInfoPtr
rfbScreen
);
extern
void
rfbH
ttpInitSockets
(
rfbScreenInfoPtr
rfbScreen
);
extern
void
h
ttpCheckFds
(
rfbScreenInfoPtr
rfbScreen
);
extern
void
rfbH
ttpCheckFds
(
rfbScreenInfoPtr
rfbScreen
);
...
@@ -660,20 +659,20 @@ extern rfbBool rfbSendCursorPos(rfbClientPtr cl);
...
@@ -660,20 +659,20 @@ extern rfbBool rfbSendCursorPos(rfbClientPtr cl);
extern
void
rfbConvertLSBCursorBitmapOrMask
(
int
width
,
int
height
,
unsigned
char
*
bitmap
);
extern
void
rfbConvertLSBCursorBitmapOrMask
(
int
width
,
int
height
,
unsigned
char
*
bitmap
);
extern
rfbCursorPtr
rfbMakeXCursor
(
int
width
,
int
height
,
char
*
cursorString
,
char
*
maskString
);
extern
rfbCursorPtr
rfbMakeXCursor
(
int
width
,
int
height
,
char
*
cursorString
,
char
*
maskString
);
extern
char
*
rfbMakeMaskForXCursor
(
int
width
,
int
height
,
char
*
cursorString
);
extern
char
*
rfbMakeMaskForXCursor
(
int
width
,
int
height
,
char
*
cursorString
);
extern
void
MakeXCursorFromRichCursor
(
rfbScreenInfoPtr
rfbScreen
,
rfbCursorPtr
cursor
);
extern
void
rfb
MakeXCursorFromRichCursor
(
rfbScreenInfoPtr
rfbScreen
,
rfbCursorPtr
cursor
);
extern
void
MakeRichCursorFromXCursor
(
rfbScreenInfoPtr
rfbScreen
,
rfbCursorPtr
cursor
);
extern
void
rfb
MakeRichCursorFromXCursor
(
rfbScreenInfoPtr
rfbScreen
,
rfbCursorPtr
cursor
);
extern
void
rfbFreeCursor
(
rfbCursorPtr
cursor
);
extern
void
rfbFreeCursor
(
rfbCursorPtr
cursor
);
extern
void
rfbDrawCursor
(
rfbScreenInfoPtr
rfbScreen
);
extern
void
rfbDrawCursor
(
rfbScreenInfoPtr
rfbScreen
);
extern
void
rfbUndrawCursor
(
rfbScreenInfoPtr
rfbScreen
);
extern
void
rfbUndrawCursor
(
rfbScreenInfoPtr
rfbScreen
);
extern
void
rfbSetCursor
(
rfbScreenInfoPtr
rfbScreen
,
rfbCursorPtr
c
,
rfbBool
freeOld
);
extern
void
rfbSetCursor
(
rfbScreenInfoPtr
rfbScreen
,
rfbCursorPtr
c
,
rfbBool
freeOld
);
/* cursor handling for the pointer */
/* cursor handling for the pointer */
extern
void
d
efaultPtrAddEvent
(
int
buttonMask
,
int
x
,
int
y
,
rfbClientPtr
cl
);
extern
void
rfbD
efaultPtrAddEvent
(
int
buttonMask
,
int
x
,
int
y
,
rfbClientPtr
cl
);
/* zrle.c */
/* zrle.c */
#ifdef LIBVNCSERVER_HAVE_LIBZ
#ifdef LIBVNCSERVER_HAVE_LIBZ
extern
rfbBool
rfbSendRectEncodingZRLE
(
rfbClientPtr
cl
,
int
x
,
int
y
,
int
w
,
int
h
);
extern
rfbBool
rfbSendRectEncodingZRLE
(
rfbClientPtr
cl
,
int
x
,
int
y
,
int
w
,
int
h
);
extern
void
FreeZrleData
(
rfbClientPtr
cl
);
extern
void
rfb
FreeZrleData
(
rfbClientPtr
cl
);
#endif
#endif
/* stats.c */
/* stats.c */
...
@@ -751,7 +750,7 @@ void rfbDoCopyRegion(rfbScreenInfoPtr rfbScreen,sraRegionPtr copyRegion,int dx,i
...
@@ -751,7 +750,7 @@ void rfbDoCopyRegion(rfbScreenInfoPtr rfbScreen,sraRegionPtr copyRegion,int dx,i
void
rfbMarkRectAsModified
(
rfbScreenInfoPtr
rfbScreen
,
int
x1
,
int
y1
,
int
x2
,
int
y2
);
void
rfbMarkRectAsModified
(
rfbScreenInfoPtr
rfbScreen
,
int
x1
,
int
y1
,
int
x2
,
int
y2
);
void
rfbMarkRegionAsModified
(
rfbScreenInfoPtr
rfbScreen
,
sraRegionPtr
modRegion
);
void
rfbMarkRegionAsModified
(
rfbScreenInfoPtr
rfbScreen
,
sraRegionPtr
modRegion
);
void
d
oNothingWithClient
(
rfbClientPtr
cl
);
void
rfbD
oNothingWithClient
(
rfbClientPtr
cl
);
enum
rfbNewClientAction
defaultNewClientHook
(
rfbClientPtr
cl
);
enum
rfbNewClientAction
defaultNewClientHook
(
rfbClientPtr
cl
);
/* to check against plain passwords */
/* to check against plain passwords */
...
...
rfb/rfbproto.h
View file @
97299606
...
@@ -991,10 +991,10 @@ typedef union {
...
@@ -991,10 +991,10 @@ typedef union {
#define MAXPWLEN 8
#define MAXPWLEN 8
#define CHALLENGESIZE 16
#define CHALLENGESIZE 16
extern
int
vnc
EncryptAndStorePasswd
(
char
*
passwd
,
char
*
fname
);
extern
int
rfb
EncryptAndStorePasswd
(
char
*
passwd
,
char
*
fname
);
extern
char
*
vnc
DecryptPasswdFromFile
(
char
*
fname
);
extern
char
*
rfb
DecryptPasswdFromFile
(
char
*
fname
);
extern
void
vnc
RandomBytes
(
unsigned
char
*
bytes
);
extern
void
rfb
RandomBytes
(
unsigned
char
*
bytes
);
extern
void
vnc
EncryptBytes
(
unsigned
char
*
bytes
,
char
*
passwd
);
extern
void
rfb
EncryptBytes
(
unsigned
char
*
bytes
,
char
*
passwd
);
#endif
#endif
test/cargstest.c
View file @
97299606
...
@@ -13,9 +13,9 @@ int main(int argc,char** argv)
...
@@ -13,9 +13,9 @@ int main(int argc,char** argv)
#define CHECK(a,b) if(screen->a!=b) { fprintf(stderr,#a " is %d (should be " #b ")\n",screen->a); ret=1; }
#define CHECK(a,b) if(screen->a!=b) { fprintf(stderr,#a " is %d (should be " #b ")\n",screen->a); ret=1; }
CHECK
(
width
,
1024
);
CHECK
(
width
,
1024
);
CHECK
(
height
,
768
);
CHECK
(
height
,
768
);
CHECK
(
rfbA
lwaysShared
,
TRUE
);
CHECK
(
a
lwaysShared
,
TRUE
);
CHECK
(
httpPort
,
3002
);
CHECK
(
httpPort
,
3002
);
CHECK
(
rfbD
ontDisconnect
,
TRUE
);
CHECK
(
d
ontDisconnect
,
TRUE
);
if
(
fake_argc
!=
2
)
{
if
(
fake_argc
!=
2
)
{
fprintf
(
stderr
,
"fake_argc is %d (should be 2)
\n
"
,
fake_argc
);
fprintf
(
stderr
,
"fake_argc is %d (should be 2)
\n
"
,
fake_argc
);
ret
=
1
;
ret
=
1
;
...
...
test/copyrecttest.c
View file @
97299606
...
@@ -21,7 +21,7 @@ int main(int argc,char** argv)
...
@@ -21,7 +21,7 @@ int main(int argc,char** argv)
rfbScreenInfoPtr
server
=
rfbGetScreen
(
&
argc
,
argv
,
width
,
height
,
8
,
3
,
4
);
rfbScreenInfoPtr
server
=
rfbGetScreen
(
&
argc
,
argv
,
width
,
height
,
8
,
3
,
4
);
server
->
frameBuffer
=
(
char
*
)
malloc
(
width
*
height
*
4
);
server
->
frameBuffer
=
(
char
*
)
malloc
(
width
*
height
*
4
);
initBackground
(
server
);
initBackground
(
server
);
server
->
rfbD
eferUpdateTime
=
0
;
server
->
d
eferUpdateTime
=
0
;
rfbInitServer
(
server
);
rfbInitServer
(
server
);
r
=
0
;
r
=
0
;
...
...
vncterm/LinuxVNC.c
View file @
97299606
...
@@ -114,12 +114,12 @@ int main(int argc,char **argv)
...
@@ -114,12 +114,12 @@ int main(int argc,char **argv)
/* console init */
/* console init */
console
=
vcGetConsole
(
&
argc
,
argv
,
width
,
height
,
&
vgaFont
,
TRUE
);
console
=
vcGetConsole
(
&
argc
,
argv
,
width
,
height
,
&
vgaFont
,
TRUE
);
for
(
i
=
0
;
i
<
16
;
i
++
)
{
for
(
i
=
0
;
i
<
16
;
i
++
)
{
console
->
rfbS
creen
->
colourMap
.
data
.
bytes
[
i
*
3
+
0
]
=
default_red
[
color_table
[
i
]];
console
->
s
creen
->
colourMap
.
data
.
bytes
[
i
*
3
+
0
]
=
default_red
[
color_table
[
i
]];
console
->
rfbS
creen
->
colourMap
.
data
.
bytes
[
i
*
3
+
1
]
=
default_grn
[
color_table
[
i
]];
console
->
s
creen
->
colourMap
.
data
.
bytes
[
i
*
3
+
1
]
=
default_grn
[
color_table
[
i
]];
console
->
rfbS
creen
->
colourMap
.
data
.
bytes
[
i
*
3
+
2
]
=
default_blu
[
color_table
[
i
]];
console
->
s
creen
->
colourMap
.
data
.
bytes
[
i
*
3
+
2
]
=
default_blu
[
color_table
[
i
]];
}
}
console
->
rfbS
creen
->
desktopName
=
title
;
console
->
s
creen
->
desktopName
=
title
;
console
->
rfbS
creen
->
kbdAddEvent
=
do_key
;
console
->
s
creen
->
kbdAddEvent
=
do_key
;
console
->
selectTimeOut
=
100000
;
console
->
selectTimeOut
=
100000
;
console
->
wrapBottomToTop
=
TRUE
;
console
->
wrapBottomToTop
=
TRUE
;
#ifdef USE_OLD_VCS
#ifdef USE_OLD_VCS
...
...
vncterm/VNConsole.c
View file @
97299606
...
@@ -25,24 +25,24 @@ unsigned char colourMap16[16*3]={
...
@@ -25,24 +25,24 @@ unsigned char colourMap16[16*3]={
void
MakeColourMap16
(
vncConsolePtr
c
)
void
MakeColourMap16
(
vncConsolePtr
c
)
{
{
int
i
,
j
;
int
i
,
j
;
rfbColourMap
*
colourMap
=&
(
c
->
rfbS
creen
->
colourMap
);
rfbColourMap
*
colourMap
=&
(
c
->
s
creen
->
colourMap
);
if
(
colourMap
->
count
)
if
(
colourMap
->
count
)
free
(
colourMap
->
data
.
bytes
);
free
(
colourMap
->
data
.
bytes
);
colourMap
->
data
.
bytes
=
malloc
(
16
*
3
);
colourMap
->
data
.
bytes
=
malloc
(
16
*
3
);
memcpy
(
colourMap
->
data
.
bytes
,
colourMap16
,
16
*
3
);
memcpy
(
colourMap
->
data
.
bytes
,
colourMap16
,
16
*
3
);
colourMap
->
count
=
16
;
colourMap
->
count
=
16
;
colourMap
->
is16
=
FALSE
;
colourMap
->
is16
=
FALSE
;
c
->
rfbScreen
->
rfbS
erverFormat
.
trueColour
=
FALSE
;
c
->
screen
->
s
erverFormat
.
trueColour
=
FALSE
;
}
}
void
vcDrawOrHideCursor
(
vncConsolePtr
c
)
void
vcDrawOrHideCursor
(
vncConsolePtr
c
)
{
{
int
i
,
j
,
w
=
c
->
rfbS
creen
->
paddedWidthInBytes
;
int
i
,
j
,
w
=
c
->
s
creen
->
paddedWidthInBytes
;
char
*
b
=
c
->
rfbS
creen
->
frameBuffer
+
c
->
y
*
c
->
cHeight
*
w
+
c
->
x
*
c
->
cWidth
;
char
*
b
=
c
->
s
creen
->
frameBuffer
+
c
->
y
*
c
->
cHeight
*
w
+
c
->
x
*
c
->
cWidth
;
for
(
j
=
c
->
cy1
;
j
<
c
->
cy2
;
j
++
)
for
(
j
=
c
->
cy1
;
j
<
c
->
cy2
;
j
++
)
for
(
i
=
c
->
cx1
;
i
<
c
->
cx2
;
i
++
)
for
(
i
=
c
->
cx1
;
i
<
c
->
cx2
;
i
++
)
b
[
j
*
w
+
i
]
^=
0x0f
;
b
[
j
*
w
+
i
]
^=
0x0f
;
rfbMarkRectAsModified
(
c
->
rfbS
creen
,
rfbMarkRectAsModified
(
c
->
s
creen
,
c
->
x
*
c
->
cWidth
+
c
->
cx1
,
c
->
y
*
c
->
cHeight
+
c
->
cy1
,
c
->
x
*
c
->
cWidth
+
c
->
cx1
,
c
->
y
*
c
->
cHeight
+
c
->
cy1
,
c
->
x
*
c
->
cWidth
+
c
->
cx2
,
c
->
y
*
c
->
cHeight
+
c
->
cy2
);
c
->
x
*
c
->
cWidth
+
c
->
cx2
,
c
->
y
*
c
->
cHeight
+
c
->
cy2
);
c
->
cursorIsDrawn
=
c
->
cursorIsDrawn
?
FALSE
:
TRUE
;
c
->
cursorIsDrawn
=
c
->
cursorIsDrawn
?
FALSE
:
TRUE
;
...
@@ -50,7 +50,7 @@ void vcDrawOrHideCursor(vncConsolePtr c)
...
@@ -50,7 +50,7 @@ void vcDrawOrHideCursor(vncConsolePtr c)
void
vcDrawCursor
(
vncConsolePtr
c
)
void
vcDrawCursor
(
vncConsolePtr
c
)
{
{
rfbDrawCursor
(
c
->
rfbS
creen
);
rfbDrawCursor
(
c
->
s
creen
);
if
(
c
->
cursorActive
&&
!
c
->
cursorIsDrawn
&&
c
->
y
<
c
->
height
&&
c
->
x
<
c
->
width
)
{
if
(
c
->
cursorActive
&&
!
c
->
cursorIsDrawn
&&
c
->
y
<
c
->
height
&&
c
->
x
<
c
->
width
)
{
/* rfbLog("DrawCursor: %d,%d\n",c->x,c->y); */
/* rfbLog("DrawCursor: %d,%d\n",c->x,c->y); */
vcDrawOrHideCursor
(
c
);
vcDrawOrHideCursor
(
c
);
...
@@ -59,7 +59,7 @@ void vcDrawCursor(vncConsolePtr c)
...
@@ -59,7 +59,7 @@ void vcDrawCursor(vncConsolePtr c)
void
vcHideCursor
(
vncConsolePtr
c
)
void
vcHideCursor
(
vncConsolePtr
c
)
{
{
rfbUndrawCursor
(
c
->
rfbS
creen
);
rfbUndrawCursor
(
c
->
s
creen
);
if
(
c
->
currentlyMarking
)
if
(
c
->
currentlyMarking
)
vcUnmark
(
c
);
vcUnmark
(
c
);
if
(
c
->
cursorIsDrawn
)
{
if
(
c
->
cursorIsDrawn
)
{
...
@@ -126,23 +126,23 @@ vncConsolePtr vcGetConsole(int *argc,char **argv,
...
@@ -126,23 +126,23 @@ vncConsolePtr vcGetConsole(int *argc,char **argv,
if
(
c
->
cy1
<
0
)
if
(
c
->
cy1
<
0
)
c
->
cy2
=
0
;
c
->
cy2
=
0
;
c
->
rfbS
creen
=
c
->
s
creen
=
rfbGetScreen
(
argc
,
argv
,
c
->
cWidth
*
c
->
width
,
c
->
cHeight
*
c
->
height
,
8
,
1
,
1
);
rfbGetScreen
(
argc
,
argv
,
c
->
cWidth
*
c
->
width
,
c
->
cHeight
*
c
->
height
,
8
,
1
,
1
);
c
->
rfbS
creen
->
screenData
=
(
void
*
)
c
;
c
->
s
creen
->
screenData
=
(
void
*
)
c
;
c
->
rfbS
creen
->
displayHook
=
vcMakeSureCursorIsDrawn
;
c
->
s
creen
->
displayHook
=
vcMakeSureCursorIsDrawn
;
c
->
rfbS
creen
->
frameBuffer
=
c
->
s
creen
->
frameBuffer
=
(
char
*
)
malloc
(
c
->
rfbScreen
->
width
*
c
->
rfbS
creen
->
height
);
(
char
*
)
malloc
(
c
->
screen
->
width
*
c
->
s
creen
->
height
);
memset
(
c
->
rfbS
creen
->
frameBuffer
,
c
->
backColour
,
memset
(
c
->
s
creen
->
frameBuffer
,
c
->
backColour
,
c
->
rfbScreen
->
width
*
c
->
rfbS
creen
->
height
);
c
->
screen
->
width
*
c
->
s
creen
->
height
);
c
->
rfbS
creen
->
kbdAddEvent
=
vcKbdAddEventProc
;
c
->
s
creen
->
kbdAddEvent
=
vcKbdAddEventProc
;
c
->
rfbS
creen
->
ptrAddEvent
=
vcPtrAddEventProc
;
c
->
s
creen
->
ptrAddEvent
=
vcPtrAddEventProc
;
c
->
rfbS
creen
->
setXCutText
=
vcSetXCutTextProc
;
c
->
s
creen
->
setXCutText
=
vcSetXCutTextProc
;
MakeColourMap16
(
c
);
MakeColourMap16
(
c
);
c
->
foreColour
=
0x7
;
c
->
foreColour
=
0x7
;
c
->
backColour
=
0
;
c
->
backColour
=
0
;
rfbInitServer
(
c
->
rfbS
creen
);
rfbInitServer
(
c
->
s
creen
);
return
(
c
);
return
(
c
);
}
}
...
@@ -153,7 +153,7 @@ vncConsolePtr vcGetConsole(int *argc,char **argv,
...
@@ -153,7 +153,7 @@ vncConsolePtr vcGetConsole(int *argc,char **argv,
void
vcScroll
(
vncConsolePtr
c
,
int
lineCount
)
void
vcScroll
(
vncConsolePtr
c
,
int
lineCount
)
{
{
int
y1
,
y2
;
int
y1
,
y2
;
rfbScreenInfoPtr
s
=
c
->
rfbS
creen
;
rfbScreenInfoPtr
s
=
c
->
s
creen
;
if
(
lineCount
==
0
)
if
(
lineCount
==
0
)
return
;
return
;
...
@@ -232,7 +232,7 @@ void vcPutChar(vncConsolePtr c,unsigned char ch)
...
@@ -232,7 +232,7 @@ void vcPutChar(vncConsolePtr c,unsigned char ch)
void
vcPutCharColour
(
vncConsolePtr
c
,
unsigned
char
ch
,
unsigned
char
foreColour
,
unsigned
char
backColour
)
void
vcPutCharColour
(
vncConsolePtr
c
,
unsigned
char
ch
,
unsigned
char
foreColour
,
unsigned
char
backColour
)
{
{
rfbScreenInfoPtr
s
=
c
->
rfbS
creen
;
rfbScreenInfoPtr
s
=
c
->
s
creen
;
int
j
,
x
,
y
;
int
j
,
x
,
y
;
vcHideCursor
(
c
);
vcHideCursor
(
c
);
...
@@ -394,15 +394,15 @@ void vcPtrAddEventProc(int buttonMask,int x,int y,rfbClientPtr cl)
...
@@ -394,15 +394,15 @@ void vcPtrAddEventProc(int buttonMask,int x,int y,rfbClientPtr cl)
{
{
vncConsolePtr
c
=
(
vncConsolePtr
)
cl
->
screen
->
screenData
;
vncConsolePtr
c
=
(
vncConsolePtr
)
cl
->
screen
->
screenData
;
rfbUndrawCursor
(
c
->
rfbS
creen
);
rfbUndrawCursor
(
c
->
s
creen
);
if
(
c
->
wasRightButtonDown
)
{
if
(
c
->
wasRightButtonDown
)
{
if
((
buttonMask
&
4
)
==
0
)
{
if
((
buttonMask
&
4
)
==
0
)
{
if
(
c
->
selection
)
{
if
(
c
->
selection
)
{
char
*
s
;
char
*
s
;
for
(
s
=
c
->
selection
;
*
s
;
s
++
)
{
for
(
s
=
c
->
selection
;
*
s
;
s
++
)
{
c
->
rfbS
creen
->
kbdAddEvent
(
1
,
*
s
,
cl
);
c
->
s
creen
->
kbdAddEvent
(
1
,
*
s
,
cl
);
c
->
rfbS
creen
->
kbdAddEvent
(
0
,
*
s
,
cl
);
c
->
s
creen
->
kbdAddEvent
(
0
,
*
s
,
cl
);
}
}
}
}
c
->
wasRightButtonDown
=
0
;
c
->
wasRightButtonDown
=
0
;
...
@@ -455,9 +455,9 @@ void vcPtrAddEventProc(int buttonMask,int x,int y,rfbClientPtr cl)
...
@@ -455,9 +455,9 @@ void vcPtrAddEventProc(int buttonMask,int x,int y,rfbClientPtr cl)
memcpy
(
c
->
selection
,
c
->
screenBuffer
+
i
,
j
-
i
);
memcpy
(
c
->
selection
,
c
->
screenBuffer
+
i
,
j
-
i
);
c
->
selection
[
j
-
i
]
=
0
;
c
->
selection
[
j
-
i
]
=
0
;
vcUnmark
(
c
);
vcUnmark
(
c
);
rfbGotXCutText
(
c
->
rfbS
creen
,
c
->
selection
,
j
-
i
);
rfbGotXCutText
(
c
->
s
creen
,
c
->
selection
,
j
-
i
);
}
}
d
efaultPtrAddEvent
(
buttonMask
,
x
,
y
,
cl
);
rfbD
efaultPtrAddEvent
(
buttonMask
,
x
,
y
,
cl
);
}
}
void
vcSetXCutTextProc
(
char
*
str
,
int
len
,
struct
_rfbClientRec
*
cl
)
void
vcSetXCutTextProc
(
char
*
str
,
int
len
,
struct
_rfbClientRec
*
cl
)
...
@@ -475,12 +475,12 @@ void vcToggleMarkCell(vncConsolePtr c,int pos)
...
@@ -475,12 +475,12 @@ void vcToggleMarkCell(vncConsolePtr c,int pos)
int
x
=
(
pos
%
c
->
width
)
*
c
->
cWidth
,
int
x
=
(
pos
%
c
->
width
)
*
c
->
cWidth
,
y
=
(
pos
/
c
->
width
)
*
c
->
cHeight
;
y
=
(
pos
/
c
->
width
)
*
c
->
cHeight
;
int
i
,
j
;
int
i
,
j
;
rfbScreenInfoPtr
s
=
c
->
rfbS
creen
;
rfbScreenInfoPtr
s
=
c
->
s
creen
;
char
*
b
=
s
->
frameBuffer
+
y
*
s
->
width
+
x
;
char
*
b
=
s
->
frameBuffer
+
y
*
s
->
width
+
x
;
for
(
j
=
0
;
j
<
c
->
cHeight
;
j
++
)
for
(
j
=
0
;
j
<
c
->
cHeight
;
j
++
)
for
(
i
=
0
;
i
<
c
->
cWidth
;
i
++
)
for
(
i
=
0
;
i
<
c
->
cWidth
;
i
++
)
b
[
j
*
s
->
width
+
i
]
^=
0x0f
;
b
[
j
*
s
->
width
+
i
]
^=
0x0f
;
rfbMarkRectAsModified
(
c
->
rfbS
creen
,
x
,
y
,
x
+
c
->
cWidth
,
y
+
c
->
cHeight
);
rfbMarkRectAsModified
(
c
->
s
creen
,
x
,
y
,
x
+
c
->
cWidth
,
y
+
c
->
cHeight
);
}
}
void
vcUnmark
(
vncConsolePtr
c
)
void
vcUnmark
(
vncConsolePtr
c
)
...
@@ -498,6 +498,6 @@ void vcUnmark(vncConsolePtr c)
...
@@ -498,6 +498,6 @@ void vcUnmark(vncConsolePtr c)
void
vcProcessEvents
(
vncConsolePtr
c
)
void
vcProcessEvents
(
vncConsolePtr
c
)
{
{
rfbProcessEvents
(
c
->
rfbS
creen
,
c
->
selectTimeOut
);
rfbProcessEvents
(
c
->
s
creen
,
c
->
selectTimeOut
);
}
}
vncterm/VNConsole.h
View file @
97299606
...
@@ -52,7 +52,7 @@ typedef struct vncConsole {
...
@@ -52,7 +52,7 @@ typedef struct vncConsole {
rfbBool
dontDrawCursor
;
/* for example, while scrolling */
rfbBool
dontDrawCursor
;
/* for example, while scrolling */
rfbFontDataPtr
font
;
rfbFontDataPtr
font
;
rfbScreenInfoPtr
rfbS
creen
;
rfbScreenInfoPtr
s
creen
;
}
vncConsole
,
*
vncConsolePtr
;
}
vncConsole
,
*
vncConsolePtr
;
#ifdef USE_ATTRIBUTE_BUFFER
#ifdef USE_ATTRIBUTE_BUFFER
...
...
x11vnc/x11vnc.c
View file @
97299606
...
@@ -1904,7 +1904,7 @@ enum rfbNewClientAction new_client(rfbClientPtr client) {
...
@@ -1904,7 +1904,7 @@ enum rfbNewClientAction new_client(rfbClientPtr client) {
}
}
if
(
connect_once
)
{
if
(
connect_once
)
{
if
(
screen
->
rfbDontDisconnect
&&
screen
->
rfbN
everShared
)
{
if
(
screen
->
dontDisconnect
&&
screen
->
n
everShared
)
{
if
(
!
shared
&&
accepted_client
)
{
if
(
!
shared
&&
accepted_client
)
{
rfbLog
(
"denying additional client: %s
\n
"
,
rfbLog
(
"denying additional client: %s
\n
"
,
client
->
host
);
client
->
host
);
...
@@ -4247,7 +4247,7 @@ void check_xevents(void) {
...
@@ -4247,7 +4247,7 @@ void check_xevents(void) {
static
int
first
=
1
,
sent_some_sel
=
0
;
static
int
first
=
1
,
sent_some_sel
=
0
;
static
time_t
last_request
=
0
;
static
time_t
last_request
=
0
;
time_t
now
=
time
(
0
);
time_t
now
=
time
(
0
);
int
have_clients
=
screen
->
rfbC
lientHead
?
1
:
0
;
int
have_clients
=
screen
->
c
lientHead
?
1
:
0
;
X_LOCK
;
X_LOCK
;
if
(
first
&&
(
watch_selection
||
vnc_connect
))
{
if
(
first
&&
(
watch_selection
||
vnc_connect
))
{
...
@@ -5161,7 +5161,7 @@ void set_colormap(void) {
...
@@ -5161,7 +5161,7 @@ void set_colormap(void) {
if
(
first
)
{
if
(
first
)
{
screen
->
colourMap
.
count
=
NCOLOR
;
screen
->
colourMap
.
count
=
NCOLOR
;
screen
->
rfbS
erverFormat
.
trueColour
=
FALSE
;
screen
->
s
erverFormat
.
trueColour
=
FALSE
;
screen
->
colourMap
.
is16
=
TRUE
;
screen
->
colourMap
.
is16
=
TRUE
;
screen
->
colourMap
.
data
.
shorts
=
(
unsigned
short
*
)
screen
->
colourMap
.
data
.
shorts
=
(
unsigned
short
*
)
malloc
(
3
*
sizeof
(
short
)
*
NCOLOR
);
malloc
(
3
*
sizeof
(
short
)
*
NCOLOR
);
...
@@ -5477,15 +5477,15 @@ void initialize_screen(int *argc, char **argv, XImage *fb) {
...
@@ -5477,15 +5477,15 @@ void initialize_screen(int *argc, char **argv, XImage *fb) {
#endif
#endif
screen
->
paddedWidthInBytes
=
rfb_bytes_per_line
;
screen
->
paddedWidthInBytes
=
rfb_bytes_per_line
;
screen
->
rfbS
erverFormat
.
bitsPerPixel
=
fb
->
bits_per_pixel
;
screen
->
s
erverFormat
.
bitsPerPixel
=
fb
->
bits_per_pixel
;
screen
->
rfbS
erverFormat
.
depth
=
fb
->
depth
;
screen
->
s
erverFormat
.
depth
=
fb
->
depth
;
screen
->
rfbS
erverFormat
.
trueColour
=
(
uint8_t
)
TRUE
;
screen
->
s
erverFormat
.
trueColour
=
(
uint8_t
)
TRUE
;
have_masks
=
((
fb
->
red_mask
|
fb
->
green_mask
|
fb
->
blue_mask
)
!=
0
);
have_masks
=
((
fb
->
red_mask
|
fb
->
green_mask
|
fb
->
blue_mask
)
!=
0
);
if
(
force_indexed_color
)
{
if
(
force_indexed_color
)
{
have_masks
=
0
;
have_masks
=
0
;
}
}
if
(
!
have_masks
&&
screen
->
rfbS
erverFormat
.
bitsPerPixel
==
8
if
(
!
have_masks
&&
screen
->
s
erverFormat
.
bitsPerPixel
==
8
&&
CellsOfScreen
(
ScreenOfDisplay
(
dpy
,
scr
))
)
{
&&
CellsOfScreen
(
ScreenOfDisplay
(
dpy
,
scr
))
)
{
/* indexed colour */
/* indexed colour */
if
(
!
quiet
)
{
if
(
!
quiet
)
{
...
@@ -5513,41 +5513,41 @@ void initialize_screen(int *argc, char **argv, XImage *fb) {
...
@@ -5513,41 +5513,41 @@ void initialize_screen(int *argc, char **argv, XImage *fb) {
}
}
/* convert masks to bit shifts and max # colors */
/* convert masks to bit shifts and max # colors */
screen
->
rfbS
erverFormat
.
redShift
=
0
;
screen
->
s
erverFormat
.
redShift
=
0
;
if
(
fb
->
red_mask
)
{
if
(
fb
->
red_mask
)
{
while
(
!
(
fb
->
red_mask
while
(
!
(
fb
->
red_mask
&
(
1
<<
screen
->
rfbS
erverFormat
.
redShift
)
)
)
{
&
(
1
<<
screen
->
s
erverFormat
.
redShift
)
)
)
{
screen
->
rfbS
erverFormat
.
redShift
++
;
screen
->
s
erverFormat
.
redShift
++
;
}
}
}
}
screen
->
rfbS
erverFormat
.
greenShift
=
0
;
screen
->
s
erverFormat
.
greenShift
=
0
;
if
(
fb
->
green_mask
)
{
if
(
fb
->
green_mask
)
{
while
(
!
(
fb
->
green_mask
while
(
!
(
fb
->
green_mask
&
(
1
<<
screen
->
rfbS
erverFormat
.
greenShift
)
)
)
{
&
(
1
<<
screen
->
s
erverFormat
.
greenShift
)
)
)
{
screen
->
rfbS
erverFormat
.
greenShift
++
;
screen
->
s
erverFormat
.
greenShift
++
;
}
}
}
}
screen
->
rfbS
erverFormat
.
blueShift
=
0
;
screen
->
s
erverFormat
.
blueShift
=
0
;
if
(
fb
->
blue_mask
)
{
if
(
fb
->
blue_mask
)
{
while
(
!
(
fb
->
blue_mask
while
(
!
(
fb
->
blue_mask
&
(
1
<<
screen
->
rfbS
erverFormat
.
blueShift
)
)
)
{
&
(
1
<<
screen
->
s
erverFormat
.
blueShift
)
)
)
{
screen
->
rfbS
erverFormat
.
blueShift
++
;
screen
->
s
erverFormat
.
blueShift
++
;
}
}
}
}
screen
->
rfbS
erverFormat
.
redMax
screen
->
s
erverFormat
.
redMax
=
fb
->
red_mask
>>
screen
->
rfbS
erverFormat
.
redShift
;
=
fb
->
red_mask
>>
screen
->
s
erverFormat
.
redShift
;
screen
->
rfbS
erverFormat
.
greenMax
screen
->
s
erverFormat
.
greenMax
=
fb
->
green_mask
>>
screen
->
rfbS
erverFormat
.
greenShift
;
=
fb
->
green_mask
>>
screen
->
s
erverFormat
.
greenShift
;
screen
->
rfbS
erverFormat
.
blueMax
screen
->
s
erverFormat
.
blueMax
=
fb
->
blue_mask
>>
screen
->
rfbS
erverFormat
.
blueShift
;
=
fb
->
blue_mask
>>
screen
->
s
erverFormat
.
blueShift
;
main_red_max
=
screen
->
rfbS
erverFormat
.
redMax
;
main_red_max
=
screen
->
s
erverFormat
.
redMax
;
main_green_max
=
screen
->
rfbS
erverFormat
.
greenMax
;
main_green_max
=
screen
->
s
erverFormat
.
greenMax
;
main_blue_max
=
screen
->
rfbS
erverFormat
.
blueMax
;
main_blue_max
=
screen
->
s
erverFormat
.
blueMax
;
main_red_shift
=
screen
->
rfbS
erverFormat
.
redShift
;
main_red_shift
=
screen
->
s
erverFormat
.
redShift
;
main_green_shift
=
screen
->
rfbS
erverFormat
.
greenShift
;
main_green_shift
=
screen
->
s
erverFormat
.
greenShift
;
main_blue_shift
=
screen
->
rfbS
erverFormat
.
blueShift
;
main_blue_shift
=
screen
->
s
erverFormat
.
blueShift
;
}
}
if
(
overlay
&&
!
quiet
)
{
if
(
overlay
&&
!
quiet
)
{
rfbLog
(
"
\n
"
);
rfbLog
(
"
\n
"
);
...
@@ -5587,7 +5587,7 @@ void initialize_screen(int *argc, char **argv, XImage *fb) {
...
@@ -5587,7 +5587,7 @@ void initialize_screen(int *argc, char **argv, XImage *fb) {
fclose
(
stdout
);
fclose
(
stdout
);
/* we keep stderr for logging */
/* we keep stderr for logging */
screen
->
inetdSock
=
fd
;
screen
->
inetdSock
=
fd
;
screen
->
rfbP
ort
=
0
;
screen
->
p
ort
=
0
;
}
else
if
(
!
got_rfbport
)
{
}
else
if
(
!
got_rfbport
)
{
screen
->
autoPort
=
TRUE
;
screen
->
autoPort
=
TRUE
;
...
@@ -5595,16 +5595,16 @@ void initialize_screen(int *argc, char **argv, XImage *fb) {
...
@@ -5595,16 +5595,16 @@ void initialize_screen(int *argc, char **argv, XImage *fb) {
if
(
!
got_nevershared
&&
!
got_alwaysshared
)
{
if
(
!
got_nevershared
&&
!
got_alwaysshared
)
{
if
(
shared
)
{
if
(
shared
)
{
screen
->
rfbA
lwaysShared
=
TRUE
;
screen
->
a
lwaysShared
=
TRUE
;
}
else
{
}
else
{
screen
->
rfbD
ontDisconnect
=
TRUE
;
screen
->
d
ontDisconnect
=
TRUE
;
screen
->
rfbN
everShared
=
TRUE
;
screen
->
n
everShared
=
TRUE
;
}
}
}
}
/* XXX the following is based on libvncserver defaults. */
/* XXX the following is based on libvncserver defaults. */
if
(
screen
->
rfbD
eferUpdateTime
==
5
)
{
if
(
screen
->
d
eferUpdateTime
==
5
)
{
/* XXX will be fixed someday */
/* XXX will be fixed someday */
screen
->
rfbD
eferUpdateTime
=
defer_update
;
screen
->
d
eferUpdateTime
=
defer_update
;
}
}
/* event callbacks: */
/* event callbacks: */
...
@@ -5625,8 +5625,8 @@ void initialize_screen(int *argc, char **argv, XImage *fb) {
...
@@ -5625,8 +5625,8 @@ void initialize_screen(int *argc, char **argv, XImage *fb) {
rfbInitServer
(
screen
);
rfbInitServer
(
screen
);
bpp
=
screen
->
rfbS
erverFormat
.
bitsPerPixel
;
bpp
=
screen
->
s
erverFormat
.
bitsPerPixel
;
depth
=
screen
->
rfbS
erverFormat
.
depth
;
depth
=
screen
->
s
erverFormat
.
depth
;
if
(
scaling
)
{
if
(
scaling
)
{
mark_rect_as_modified
(
0
,
0
,
dpy_x
,
dpy_y
,
0
);
mark_rect_as_modified
(
0
,
0
,
dpy_x
,
dpy_y
,
0
);
...
@@ -5635,11 +5635,11 @@ void initialize_screen(int *argc, char **argv, XImage *fb) {
...
@@ -5635,11 +5635,11 @@ void initialize_screen(int *argc, char **argv, XImage *fb) {
if
(
viewonly_passwd
)
{
if
(
viewonly_passwd
)
{
/* append the view only passwd after the normal passwd */
/* append the view only passwd after the normal passwd */
char
**
passwds_new
=
malloc
(
3
*
sizeof
(
char
**
));
char
**
passwds_new
=
malloc
(
3
*
sizeof
(
char
**
));
char
**
passwds_old
=
(
char
**
)
screen
->
rfbA
uthPasswdData
;
char
**
passwds_old
=
(
char
**
)
screen
->
a
uthPasswdData
;
passwds_new
[
0
]
=
passwds_old
[
0
];
passwds_new
[
0
]
=
passwds_old
[
0
];
passwds_new
[
1
]
=
viewonly_passwd
;
passwds_new
[
1
]
=
viewonly_passwd
;
passwds_new
[
2
]
=
NULL
;
passwds_new
[
2
]
=
NULL
;
screen
->
rfbA
uthPasswdData
=
(
void
*
)
passwds_new
;
screen
->
a
uthPasswdData
=
(
void
*
)
passwds_new
;
}
}
}
}
...
@@ -6564,7 +6564,7 @@ static void scale_and_mark_rect(int X1, int Y1, int X2, int Y2) {
...
@@ -6564,7 +6564,7 @@ static void scale_and_mark_rect(int X1, int Y1, int X2, int Y2) {
shrink
=
0
;
shrink
=
0
;
}
}
if
(
!
screen
->
rfbS
erverFormat
.
trueColour
)
{
if
(
!
screen
->
s
erverFormat
.
trueColour
)
{
/*
/*
* PseudoColor colormap... blending leads to random colors.
* PseudoColor colormap... blending leads to random colors.
*/
*/
...
@@ -8265,7 +8265,7 @@ static void watch_loop(void) {
...
@@ -8265,7 +8265,7 @@ static void watch_loop(void) {
check_xevents
();
check_xevents
();
check_connect_inputs
();
check_connect_inputs
();
if
(
!
screen
->
rfbC
lientHead
)
{
/* waiting for a client */
if
(
!
screen
->
c
lientHead
)
{
/* waiting for a client */
usleep
(
200
*
1000
);
usleep
(
200
*
1000
);
continue
;
continue
;
}
}
...
@@ -9176,7 +9176,7 @@ int main(int argc, char* argv[]) {
...
@@ -9176,7 +9176,7 @@ int main(int argc, char* argv[]) {
CHECK_ARGC
CHECK_ARGC
passwdfile
=
argv
[
++
i
];
passwdfile
=
argv
[
++
i
];
}
else
if
(
!
strcmp
(
arg
,
"-storepasswd"
))
{
}
else
if
(
!
strcmp
(
arg
,
"-storepasswd"
))
{
if
(
i
+
2
>=
argc
||
vnc
EncryptAndStorePasswd
(
argv
[
i
+
1
],
if
(
i
+
2
>=
argc
||
rfb
EncryptAndStorePasswd
(
argv
[
i
+
1
],
argv
[
i
+
2
])
!=
0
)
{
argv
[
i
+
2
])
!=
0
)
{
fprintf
(
stderr
,
"-storepasswd failed
\n
"
);
fprintf
(
stderr
,
"-storepasswd failed
\n
"
);
exit
(
1
);
exit
(
1
);
...
@@ -10020,7 +10020,7 @@ int main(int argc, char* argv[]) {
...
@@ -10020,7 +10020,7 @@ int main(int argc, char* argv[]) {
}
}
if
(
!
inetd
)
{
if
(
!
inetd
)
{
if
(
!
screen
->
rfbPort
||
screen
->
rfbL
istenSock
<
0
)
{
if
(
!
screen
->
port
||
screen
->
l
istenSock
<
0
)
{
rfbLog
(
"Error: could not obtain listening port.
\n
"
);
rfbLog
(
"Error: could not obtain listening port.
\n
"
);
clean_up_exit
(
1
);
clean_up_exit
(
1
);
}
}
...
@@ -10028,9 +10028,9 @@ int main(int argc, char* argv[]) {
...
@@ -10028,9 +10028,9 @@ int main(int argc, char* argv[]) {
if
(
!
quiet
)
{
if
(
!
quiet
)
{
rfbLog
(
"screen setup finished.
\n
"
);
rfbLog
(
"screen setup finished.
\n
"
);
}
}
if
(
screen
->
rfbP
ort
)
{
if
(
screen
->
p
ort
)
{
char
*
host
=
this_host
();
char
*
host
=
this_host
();
int
port
=
screen
->
rfbP
ort
;
int
port
=
screen
->
p
ort
;
if
(
host
!=
NULL
)
{
if
(
host
!=
NULL
)
{
/* note that vncviewer special cases 5900-5999 */
/* note that vncviewer special cases 5900-5999 */
if
(
inetd
)
{
if
(
inetd
)
{
...
@@ -10061,7 +10061,7 @@ int main(int argc, char* argv[]) {
...
@@ -10061,7 +10061,7 @@ int main(int argc, char* argv[]) {
if
(
inetd
)
{
if
(
inetd
)
{
;
/* should not occur (rfbPort) */
;
/* should not occur (rfbPort) */
}
else
{
}
else
{
fprintf
(
stdout
,
"PORT=%d
\n
"
,
screen
->
rfbP
ort
);
fprintf
(
stdout
,
"PORT=%d
\n
"
,
screen
->
p
ort
);
}
}
fflush
(
stdout
);
fflush
(
stdout
);
}
}
...
...
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