Use environment variable rather than loadparm parameter when testing
authorJelmer Vernooij <jelmer@samba.org>
Sun, 2 Nov 2008 16:21:46 +0000 (17:21 +0100)
committerJelmer Vernooij <jelmer@samba.org>
Sun, 2 Nov 2008 16:21:46 +0000 (17:21 +0100)
nonblocking sockets.

source4/lib/socket/socket.c
source4/param/loadparm.c

index eff2c0a74354e6ccf12ee32d6b72ed465628c052..26cdac99a3dfe7bd48dab5b2ecece75f8f774ffa 100644 (file)
@@ -70,7 +70,7 @@ _PUBLIC_ NTSTATUS socket_create_with_ops(TALLOC_CTX *mem_ctx, const struct socke
 
        if (!(flags & SOCKET_FLAG_BLOCK) &&
            type == SOCKET_TYPE_STREAM &&
-               lp_parm_bool(global_loadparm, NULL, "socket", "testnonblock", false)) {
+               getenv("SOCKET_TESTNONBLOCK") != NULL) {
                (*new_sock)->flags |= SOCKET_FLAG_TESTNONBLOCK;
        }
 
index b79be28ac059abae1f2d2542d91778817c71d6c0..79132a388aa5c27fca3c5f2e9a4c23e097b66d81 100644 (file)
@@ -2482,6 +2482,14 @@ bool lp_load(struct loadparm_context *lp_ctx, const char *filename)
 
        ntstatus_check_dos_mapping = lp_nt_status_support(lp_ctx);
 
+       /* FIXME: This is a bit of a hack, but we can't use a global, since 
+        * not everything that uses lp also uses the socket library */
+       if (lp_parm_bool(lp_ctx, NULL, "socket", "testnonblock", false)) {
+               setenv("SOCKET_TESTNONBLOCK", "1", 1);
+       } else {
+               unsetenv("SOCKET_TESTNONBLOCK");
+       }
+
        /* FIXME: Check locale in environment for this: */
        if (strcmp(lp_display_charset(lp_ctx), lp_unix_charset(lp_ctx)) != 0)
                d_set_iconv(smb_iconv_open(lp_display_charset(lp_ctx), lp_unix_charset(lp_ctx)));