Version: 1
-Previous: 04d16523394b39665de0813e3a3c72c9438fa754
-Head: 91cbcbd916d5835048d140aa97741c8b7eb97c71
+Previous: 04e41906c42dd641d607cd085978535577d1be30
+Head: dd504fd25eea576996cbc575b9ab1ba7b2359382
Applied:
transpose: 84e0beee0d2d3c217cd9703b9e438d25856cacb6
fork: 91cbcbd916d5835048d140aa97741c8b7eb97c71
+ refresh-temp: dd504fd25eea576996cbc575b9ab1ba7b2359382
Unapplied:
waitall-buggy: c49c6b56c55385774065f5aa2704078e6ae0ceb8
rs-1sge: 8ec392829399dec7ed5c608b8697a482e5faa2de
--- /dev/null
+Bottom: 3e3c89beff00570aab96ab4c0bd6a397aaae83a4
+Top: 14944660e78363c6bab4cdc351003fe0f8f71bf4
+Author: Sean Hefty <sean.hefty@intel.com>
+Date: 2012-07-17 12:45:52 -0700
+
+Refresh of fork
+
+---
+
+diff --git a/src/preload.c b/src/preload.c
+index 00ca24e..ed952d7 100644
+--- a/src/preload.c
++++ b/src/preload.c
+@@ -819,7 +819,6 @@ int fcntl(int socket, int cmd, ... /* arg */)
+ */
+ pid_t fork(void)
+ {
+- struct sockaddr_storage sa;
+ struct sockaddr_in6 sin6;
+ pid_t pid;
+ sem_t *sem;
+@@ -833,12 +832,12 @@ pid_t fork(void)
+ (fd_get(last_accept, &sfd) != fd_fork))
+ goto out;
+
+- len = sizeof sa;
+- ret = real.getsockname(sfd, (struct sockaddr *) &sa, &len);
++ len = sizeof sin6;
++ ret = real.getsockname(sfd, (struct sockaddr *) &sin6, &len);
+ if (ret)
+ goto out;
+- sin6.sin6_family = sa.ss_family;
+- sin6.sin6_port = ((struct sockaddr_in6 *) &sa)->sin6_port;
++ sin6.sin6_flowinfor = sin6.sin6_scope_id = 0;
++ memset(&sin6.sin6_addr, 0, sizeof sin6.sin6_addr);
+
+ sem = sem_open("/rsocket_fork", O_CREAT, 0644, 1);
+ if (sem == SEM_FAILED)
+@@ -852,7 +851,7 @@ pid_t fork(void)
+ rsetsockopt(lfd, SOL_SOCKET, SO_REUSEADDR, ¶m, sizeof param);
+
+ sem_wait(sem);
+- ret = rbind(lfd, &sin6, sizeof sin6);
++ ret = rbind(lfd, (struct sockaddr *) &sin6, sizeof sin6);
+ if (ret)
+ goto lclose;