aboutsummaryrefslogtreecommitdiffhomepage
path: root/env_universal.c
diff options
context:
space:
mode:
authorGravatar axel <axel@liljencrantz.se>2006-10-19 02:44:38 +1000
committerGravatar axel <axel@liljencrantz.se>2006-10-19 02:44:38 +1000
commitbab168f1d1c0db1b1a9aba208a87380616ac0850 (patch)
tree29d7ae23e5460ccc470c6baf099dab152908da73 /env_universal.c
parent2ab04f40437537a96bb11fcbe7ffd0ed3ee8e8d7 (diff)
Fix yet another universal variable issue with initialization of the read buffer. This may fix fishd bugs reported by Philip Ganchev and Martin Bähr
darcs-hash:20061018164438-ac50b-c586b1ad36249853d613d0137b505377fe890d37.gz
Diffstat (limited to 'env_universal.c')
-rw-r--r--env_universal.c22
1 files changed, 6 insertions, 16 deletions
diff --git a/env_universal.c b/env_universal.c
index f686e684..c3e5cd90 100644
--- a/env_universal.c
+++ b/env_universal.c
@@ -193,7 +193,7 @@ static void check_connection()
env_universal_server.fd = -1;
env_universal_server.killme=0;
- sb_clear( &env_universal_server.input );
+ env_universal_server.input.used=0;
env_universal_read_all();
}
}
@@ -230,15 +230,11 @@ void env_universal_init( wchar_t * p,
user=u;
start_fishd=sf;
external_callback = cb;
-
- memset (&env_universal_server, 0, sizeof (connection_t));
- env_universal_server.fd = -1;
- env_universal_server.killme = 0;
+ connection_init( &env_universal_server, -1 );
+
env_universal_server.fd = get_socket(1);
- q_init( &env_universal_server.unsent );
env_universal_common_init( &callback );
- b_init( &env_universal_server.input );
env_universal_read_all();
init = 1;
if( env_universal_server.fd >= 0 )
@@ -258,17 +254,11 @@ void env_universal_destroy()
{
wperror( L"fcntl" );
}
- try_send_all( &env_universal_server );
-
- if( close( env_universal_server.fd ) )
- {
- wperror( L"close" );
- }
+ try_send_all( &env_universal_server );
}
-
+
+ connection_destroy( &env_universal_server );
env_universal_server.fd =-1;
- q_destroy( &env_universal_server.unsent );
- sb_destroy( &env_universal_server.input );
env_universal_common_destroy();
init = 0;
}