Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Joe Martin
OpenLDAP
Commits
c9ca519c
Commit
c9ca519c
authored
Feb 20, 2012
by
Howard Chu
Committed by
Quanah Gibson-Mount
Feb 21, 2012
Browse files
ITS#7167 only poll sockets for write as needed
parent
5432ce3b
Changes
5
Hide whitespace changes
Inline
Side-by-side
libraries/libldap/ldap-int.h
View file @
c9ca519c
...
...
@@ -624,6 +624,7 @@ LDAP_F (void) ldap_free_select_info( void *sip );
LDAP_F
(
void
)
ldap_mark_select_write
(
LDAP
*
ld
,
Sockbuf
*
sb
);
LDAP_F
(
void
)
ldap_mark_select_read
(
LDAP
*
ld
,
Sockbuf
*
sb
);
LDAP_F
(
void
)
ldap_mark_select_clear
(
LDAP
*
ld
,
Sockbuf
*
sb
);
LDAP_F
(
void
)
ldap_clear_select_write
(
LDAP
*
ld
,
Sockbuf
*
sb
);
LDAP_F
(
int
)
ldap_is_read_ready
(
LDAP
*
ld
,
Sockbuf
*
sb
);
LDAP_F
(
int
)
ldap_is_write_ready
(
LDAP
*
ld
,
Sockbuf
*
sb
);
...
...
libraries/libldap/open.c
View file @
c9ca519c
...
...
@@ -344,7 +344,6 @@ ldap_init_fd(
/* Add the connection to the *LDAP's select pool */
ldap_mark_select_read
(
ld
,
conn
->
lconn_sb
);
ldap_mark_select_write
(
ld
,
conn
->
lconn_sb
);
*
ldp
=
ld
;
return
LDAP_SUCCESS
;
...
...
@@ -502,7 +501,6 @@ ldap_open_internal_connection( LDAP **ldp, ber_socket_t *fdp )
/* Add the connection to the *LDAP's select pool */
ldap_mark_select_read
(
ld
,
c
->
lconn_sb
);
ldap_mark_select_write
(
ld
,
c
->
lconn_sb
);
/* Make this connection an LDAP V3 protocol connection */
rc
=
LDAP_VERSION3
;
...
...
libraries/libldap/os-ip.c
View file @
c9ca519c
...
...
@@ -966,6 +966,32 @@ ldap_mark_select_clear( LDAP *ld, Sockbuf *sb )
#endif
}
void
ldap_clear_select_write
(
LDAP
*
ld
,
Sockbuf
*
sb
)
{
struct
selectinfo
*
sip
;
ber_socket_t
sd
;
sip
=
(
struct
selectinfo
*
)
ld
->
ld_selectinfo
;
ber_sockbuf_ctrl
(
sb
,
LBER_SB_OPT_GET_FD
,
&
sd
);
#ifdef HAVE_POLL
/* for UNIX poll(2) */
{
int
i
;
for
(
i
=
0
;
i
<
sip
->
si_maxfd
;
i
++
)
{
if
(
sip
->
si_fds
[
i
].
fd
==
sd
)
{
sip
->
si_fds
[
i
].
events
&=
~
POLL_WRITE
;
}
}
}
#else
/* for UNIX select(2) */
FD_CLR
(
sd
,
&
sip
->
si_writefds
);
#endif
}
int
ldap_is_write_ready
(
LDAP
*
ld
,
Sockbuf
*
sb
)
...
...
libraries/libldap/request.c
View file @
c9ca519c
...
...
@@ -202,6 +202,7 @@ ldap_int_flush_request(
/* sent -- waiting for a response */
ldap_mark_select_read
(
ld
,
lc
->
lconn_sb
);
ldap_clear_select_write
(
ld
,
lc
->
lconn_sb
);
}
return
0
;
}
...
...
libraries/libldap/result.c
View file @
c9ca519c
...
...
@@ -302,7 +302,7 @@ wait4msg(
if
(
ber_sockbuf_ctrl
(
lc
->
lconn_sb
,
LBER_SB_OPT_DATA_READY
,
NULL
)
)
{
lc_ready
=
1
;
lc_ready
=
2
;
/* ready at ber level, not socket level */
break
;
}
}
...
...
@@ -373,8 +373,8 @@ wait4msg(
}
}
LDAP_MUTEX_UNLOCK
(
&
ld
->
ld_req_mutex
);
/* Quit looping if no one handled any events */
if
(
!
serviced
)
/* Quit looping if no one handled any
socket
events */
if
(
!
serviced
&&
lc_ready
==
1
)
rc
=
-
1
;
}
LDAP_MUTEX_UNLOCK
(
&
ld
->
ld_conn_mutex
);
...
...
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