The Samba-Bugzilla – Attachment 11821 Details for
Bug 11728
Fix ETIME handling for Solaris event ports
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch that I think was applied to master.
p (text/plain), 1.72 KB, created by
Tom Schulz
on 2016-02-09 18:27:13 UTC
(
hide
)
Description:
Patch that I think was applied to master.
Filename:
MIME Type:
Creator:
Tom Schulz
Created:
2016-02-09 18:27:13 UTC
Size:
1.72 KB
patch
obsolete
>It is possible for port_getn to return -1 with errno set to ETIME and >still return events. If those events aren't processed the association is >lost by samba since the kernel dissacociated them and samba never >processed them so never reassociated them with the event port. The >patch checks the nget return value in the case of ETIME and if it is non >0 it doesn't return and goes through the event processing loop. > >Signed-off-by: Nathan Huff <nhuff@acm.org> >Reviewed-by: Jeremy Allison <jra@samba.org> >--- > lib/tevent/tevent_port.c | 22 ++++++++++++++++++---- > 1 file changed, 18 insertions(+), 4 deletions(-) > >diff --git a/lib/tevent/tevent_port.c b/lib/tevent/tevent_port.c >index 5b487d7..8898b57 100644 >--- a/lib/tevent/tevent_port.c >+++ b/lib/tevent/tevent_port.c >@@ -496,10 +496,24 @@ static int port_event_loop(struct port_event_context *port_ev, struct timeval *t > return 0; > } > >- if (ret == -1 && port_errno == ETIME && tvalp) { >- /* we don't care about a possible delay here */ >- tevent_common_loop_timer_delay(ev); >- return 0; >+ if (ret == -1 && port_errno == ETIME) { >+ /* >+ * If errno is set to ETIME it is possible that we still got an event. >+ * In that case we need to go through the processing loop so that we >+ * reassociate the received event with the port or the association will >+ * be lost so check the value of nget is 0 before returning. >+ */ >+ if (nget == 0) { >+ /* we don't care about a possible delay here */ >+ tevent_common_loop_timer_delay(ev); >+ return 0; >+ } >+ /* >+ * Set the return value to 0 since we do not actually have an error and we >+ * do have events that need to be processed. This keeps us from getting >+ * caught in the generic error test. >+ */ >+ ret = 0; > } > > if (ret == -1) { >--
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 11728
:
11821