diff options
author | erdgeist <> | 2006-12-08 22:53:32 +0000 |
---|---|---|
committer | erdgeist <> | 2006-12-08 22:53:32 +0000 |
commit | 932242eee7d99559bf8e0b4cec2b140f567a8149 (patch) | |
tree | dfd076af04012effb9f98d19363e8299d14a042c | |
parent | dc025776dd77e2f8da1e2ee0667962115bf90bc8 (diff) |
Logic now actually initialized and deinitialized
-rw-r--r-- | opentracker.c | 10 | ||||
-rw-r--r-- | trackerlogic.c | 18 |
2 files changed, 17 insertions, 11 deletions
diff --git a/opentracker.c b/opentracker.c index 10b7d87..ac3fda1 100644 --- a/opentracker.c +++ b/opentracker.c | |||
@@ -224,8 +224,11 @@ bailout: | |||
224 | } | 224 | } |
225 | 225 | ||
226 | void graceful( int s ) { | 226 | void graceful( int s ) { |
227 | signal( SIGINT, SIG_IGN ); | 227 | if( s == SIGINT ) { |
228 | deinit_logic(); | 228 | signal( SIGINT, SIG_IGN); |
229 | deinit_logic(); | ||
230 | exit( 0 ); | ||
231 | } | ||
229 | } | 232 | } |
230 | 233 | ||
231 | int main() | 234 | int main() |
@@ -245,7 +248,8 @@ int main() | |||
245 | panic("io_fd"); | 248 | panic("io_fd"); |
246 | 249 | ||
247 | signal( SIGINT, graceful ); | 250 | signal( SIGINT, graceful ); |
248 | init_logic( "." ); | 251 | if( init_logic( "." ) == -1 ) |
252 | panic("Logic not started"); | ||
249 | 253 | ||
250 | io_wantread(s); | 254 | io_wantread(s); |
251 | 255 | ||
diff --git a/trackerlogic.c b/trackerlogic.c index ab1f419..1407522 100644 --- a/trackerlogic.c +++ b/trackerlogic.c | |||
@@ -212,7 +212,7 @@ void heal_torrent( ot_torrent torrent ) { | |||
212 | } | 212 | } |
213 | 213 | ||
214 | void dispose_torrent( ot_torrent torrent ) { | 214 | void dispose_torrent( ot_torrent torrent ) { |
215 | unmap_file( "", torrent->peer_list, 0 ); | 215 | unmap_file( NULL, torrent->peer_list, 0 ); |
216 | unlink( to_hex( torrent->hash ) ); | 216 | unlink( to_hex( torrent->hash ) ); |
217 | MEMMOVE( torrent, torrent + 1, ( torrents_list + torrents_count ) - ( torrent + 1 ) ); | 217 | MEMMOVE( torrent, torrent + 1, ( torrents_list + torrents_count ) - ( torrent + 1 ) ); |
218 | torrents_count--; | 218 | torrents_count--; |
@@ -229,11 +229,11 @@ void *map_file( char *file_name ) { | |||
229 | int file_desc=open(file_name,O_RDWR|O_CREAT|O_NDELAY,0644); | 229 | int file_desc=open(file_name,O_RDWR|O_CREAT|O_NDELAY,0644); |
230 | if( file_desc < 0) return 0; | 230 | if( file_desc < 0) return 0; |
231 | lseek( file_desc, OT_HUGE_FILESIZE, SEEK_SET ); | 231 | lseek( file_desc, OT_HUGE_FILESIZE, SEEK_SET ); |
232 | 232 | write( file_desc, "_", 1 ); | |
233 | map=mmap(0,OT_HUGE_FILESIZE,PROT_READ|PROT_WRITE,MAP_SHARED,file_desc,0); | 233 | map=mmap(0,OT_HUGE_FILESIZE,PROT_READ|PROT_WRITE,MAP_SHARED,file_desc,0); |
234 | close(file_desc); | 234 | close(file_desc); |
235 | } else | 235 | } else |
236 | map=mmap(0,OT_HUGE_FILESIZE,PROT_READ|PROT_WRITE,MAP_ANON,-1,0); | 236 | map=mmap(0,OT_HUGE_FILESIZE,PROT_READ|PROT_WRITE,MAP_ANON|MAP_PRIVATE,-1,0); |
237 | 237 | ||
238 | return (map == (char*)-1) ? 0 : map; | 238 | return (map == (char*)-1) ? 0 : map; |
239 | } | 239 | } |
@@ -259,13 +259,15 @@ int init_logic( char *directory ) { | |||
259 | if( directory ) | 259 | if( directory ) |
260 | chdir( directory ); | 260 | chdir( directory ); |
261 | 261 | ||
262 | scratch_space = map_file( "" ); | 262 | scratch_space = map_file( NULL ); |
263 | torrents_list = map_file( "" ); | 263 | torrents_list = map_file( NULL ); |
264 | torrents_count = 0; | 264 | torrents_count = 0; |
265 | 265 | ||
266 | printf( "%08x %08x\n", scratch_space, torrents_list ); | ||
267 | |||
266 | if( !scratch_space || !torrents_list ) { | 268 | if( !scratch_space || !torrents_list ) { |
267 | if( scratch_space || torrents_list ) | 269 | if( scratch_space || torrents_list ) |
268 | unmap_file( "", scratch_space ? (void*)scratch_space : (void*)torrents_list, 0 ); | 270 | unmap_file( NULL, scratch_space ? (void*)scratch_space : (void*)torrents_list, 0 ); |
269 | return -1; | 271 | return -1; |
270 | } | 272 | } |
271 | 273 | ||
@@ -308,6 +310,6 @@ void deinit_logic( ) { | |||
308 | // For all torrents... blablabla | 310 | // For all torrents... blablabla |
309 | while( torrents_count-- ) | 311 | while( torrents_count-- ) |
310 | unmap_file( to_hex(torrents_list[torrents_count].hash), torrents_list[torrents_count].peer_list, torrents_list[torrents_count].peer_count * sizeof(struct ot_peer) ); | 312 | unmap_file( to_hex(torrents_list[torrents_count].hash), torrents_list[torrents_count].peer_list, torrents_list[torrents_count].peer_count * sizeof(struct ot_peer) ); |
311 | unmap_file( "", torrents_list, 0 ); | 313 | unmap_file( NULL, torrents_list, 0 ); |
312 | unmap_file( "", scratch_space, 0 ); | 314 | unmap_file( NULL, scratch_space, 0 ); |
313 | } | 315 | } |