Properly close omapi connection (#1523547)
This commit is contained in:
		
							parent
							
								
									e701b476ce
								
							
						
					
					
						commit
						956986ca88
					
				
							
								
								
									
										52
									
								
								dhcp-4.3.6-omapi-leak.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								dhcp-4.3.6-omapi-leak.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,52 @@ | |||||||
|  | commit ccff9ed69d0b26d33ce9cac8e83dab535b64d627 | ||||||
|  | Author: Thomas Markwalder <tmark@isc.org> | ||||||
|  | Date:   Tue Dec 5 15:12:34 2017 -0500 | ||||||
|  | 
 | ||||||
|  |     [46767] Plugged a socket descriptor leak in OMAPI | ||||||
|  |      | ||||||
|  |     If disconnect is triggered by the reader closing the socket, while there | ||||||
|  |     is data left to write, the socket would be orphaned. | ||||||
|  |      | ||||||
|  |     omapip/buffer.c | ||||||
|  |         omapi_connection_writea() - added logic to recall disconnect once | ||||||
|  |         pending data has been written | ||||||
|  |      | ||||||
|  |     omapip/message.c | ||||||
|  |         Removed static declaration from omapi_message_unregister so you can | ||||||
|  |         actually compile when DEBUG_PROTOCOL is defined. | ||||||
|  |      | ||||||
|  |     Added a release note | ||||||
|  | 
 | ||||||
|  | diff --git a/omapip/buffer.c b/omapip/buffer.c
 | ||||||
|  | index 6e0621b..a21f0a8 100644
 | ||||||
|  | --- a/omapip/buffer.c
 | ||||||
|  | +++ b/omapip/buffer.c
 | ||||||
|  | @@ -565,6 +565,15 @@ isc_result_t omapi_connection_writer (omapi_object_t *h)
 | ||||||
|  |  			omapi_buffer_dereference (&buffer, MDL); | ||||||
|  |  		} | ||||||
|  |  	} | ||||||
|  | +
 | ||||||
|  | +	/* If we had data left to write when we're told to disconnect,
 | ||||||
|  | +	* we need recall disconnect, now that we're done writing.
 | ||||||
|  | +	* See rt46767. */
 | ||||||
|  | +	if (c->out_bytes == 0 && c->state == omapi_connection_disconnecting) {
 | ||||||
|  | +		omapi_disconnect (h, 1);
 | ||||||
|  | +		return ISC_R_SHUTTINGDOWN;
 | ||||||
|  | +	}
 | ||||||
|  | +
 | ||||||
|  |  	return ISC_R_SUCCESS; | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | diff --git a/omapip/message.c b/omapip/message.c
 | ||||||
|  | index ee15d82..37abbd2 100644
 | ||||||
|  | --- a/omapip/message.c
 | ||||||
|  | +++ b/omapip/message.c
 | ||||||
|  | @@ -339,7 +339,7 @@ isc_result_t omapi_message_unregister (omapi_object_t *mo)
 | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |  #ifdef DEBUG_PROTOCOL | ||||||
|  | -static const char *omapi_message_op_name(int op) {
 | ||||||
|  | +const char *omapi_message_op_name(int op) {
 | ||||||
|  |  	switch (op) { | ||||||
|  |  	case OMAPI_OP_OPEN:    return "OMAPI_OP_OPEN"; | ||||||
|  |  	case OMAPI_OP_REFRESH: return "OMAPI_OP_REFRESH"; | ||||||
							
								
								
									
										10
									
								
								dhcp.spec
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								dhcp.spec
									
									
									
									
									
								
							| @ -20,7 +20,7 @@ Summary:  Dynamic host configuration protocol software | |||||||
| Name:     dhcp | Name:     dhcp | ||||||
| Version:  4.3.6 | Version:  4.3.6 | ||||||
| %global VERSION %%{version}%%{prever} | %global VERSION %%{version}%%{prever} | ||||||
| Release:  7%{?dist} | Release:  8%{?dist} | ||||||
| # NEVER CHANGE THE EPOCH on this package.  The previous maintainer (prior to | # NEVER CHANGE THE EPOCH on this package.  The previous maintainer (prior to | ||||||
| # dcantrell maintaining the package) made incorrect use of the epoch and | # dcantrell maintaining the package) made incorrect use of the epoch and | ||||||
| # that's why it is at 12 now.  It should have never been used, but it was. | # that's why it is at 12 now.  It should have never been used, but it was. | ||||||
| @ -77,6 +77,7 @@ Patch36:  dhcp-option97-pxe-client-id.patch | |||||||
| Patch37:  dhcp-stateless-DUID-LLT.patch | Patch37:  dhcp-stateless-DUID-LLT.patch | ||||||
| Patch38:  dhcp-dhclient-preinit6s.patch | Patch38:  dhcp-dhclient-preinit6s.patch | ||||||
| Patch39:  dhcp-handle_ctx_signals.patch | Patch39:  dhcp-handle_ctx_signals.patch | ||||||
|  | Patch40:  dhcp-4.3.6-omapi-leak.patch | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| BuildRequires: autoconf | BuildRequires: autoconf | ||||||
| @ -339,6 +340,10 @@ rm bind/bind.tar.gz | |||||||
| # add signal handlers for proper work with share context | # add signal handlers for proper work with share context | ||||||
| %patch39 -p1 -b .signals | %patch39 -p1 -b .signals | ||||||
| 
 | 
 | ||||||
|  | # close omapi socker descriptions properly | ||||||
|  | # https://bugzilla.redhat.com/1523547  | ||||||
|  | %patch40 -p1 -b .omapi-leak | ||||||
|  | 
 | ||||||
| # DHCLIENT_DEFAULT_PREFIX_LEN  64 -> 128 | # DHCLIENT_DEFAULT_PREFIX_LEN  64 -> 128 | ||||||
| # https://bugzilla.gnome.org/show_bug.cgi?id=656610 | # https://bugzilla.gnome.org/show_bug.cgi?id=656610 | ||||||
| sed -i -e 's|DHCLIENT_DEFAULT_PREFIX_LEN 64|DHCLIENT_DEFAULT_PREFIX_LEN 128|g' includes/site.h | sed -i -e 's|DHCLIENT_DEFAULT_PREFIX_LEN 64|DHCLIENT_DEFAULT_PREFIX_LEN 128|g' includes/site.h | ||||||
| @ -665,6 +670,9 @@ done | |||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Fri Dec  8 2017 Pavel Zhukov <pzhukov@redhat.com> - 12:4.3.6-8 | ||||||
|  | - Fix omapi SD leak (#1523547) | ||||||
|  | 
 | ||||||
| * Thu Nov  9 2017 Pavel Zhukov <pzhukov@redhat.com> - 12:4.3.6-7 | * Thu Nov  9 2017 Pavel Zhukov <pzhukov@redhat.com> - 12:4.3.6-7 | ||||||
| - Add patch for proper signal handling with shared context (#1457871) | - Add patch for proper signal handling with shared context (#1457871) | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user