Changeset 69
- Timestamp:
- Sep 11, 2007, 5:28:57 PM (18 years ago)
- Location:
- trunk/samba/source/ndpsmb
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/samba/source/ndpsmb/smbcd.c
r68 r69 292 292 293 293 // rc = 0 - continue, rc = 1 - quit with response 294 int processrequest(HPIPE pipe, cli_state * 294 int processrequest(HPIPE pipe, cli_state ** _cli, unsigned long * reconnect, smbwrp_server * srv, smb_request *req, smb_response *res) 295 295 { 296 296 int rc = 0; 297 297 int callrc = 0; 298 298 char * data; 299 if (!pipe || !cli || !reconnect || !srv || !req || !req->param || req->paramlen > req->length || !res) 299 cli_state * cli = *_cli; 300 301 if (!pipe || !*cli || !reconnect || !srv || !req || !req->param || req->paramlen > req->length || !res) 300 302 { 301 303 debuglocal(0,"invalid structures\n"); … … 308 310 { 309 311 debuglocal(1,"Reconnecting to last server requested\n"); 310 res->rc = smbwrp_connect(srv, cli);312 res->rc = smbwrp_connect(srv, _cli); 311 313 if (res->rc) 312 314 { … … 341 343 break; 342 344 } 343 res->rc = smbwrp_connect((smbwrp_server *)req->param, cli);345 res->rc = smbwrp_connect((smbwrp_server *)req->param, _cli); 344 346 if (!res->rc) 345 347 { … … 354 356 case SMBREQ_DISCONNECT : 355 357 { 356 smbwrp_disconnect( cli);358 smbwrp_disconnect(_cli); 357 359 } break; 358 360 case SMBREQ_OPEN : … … 691 693 unsigned long reconnect = 0; 692 694 unsigned long action; 693 cli_state * cli ;695 cli_state * cli = 0; 694 696 695 697 if (!arg) … … 699 701 } 700 702 pipe = (HPIPE)arg; 701 cli = (cli_state *)calloc(smbwrp_getclisize(), 1); 702 if (!cli) 703 { 704 debuglocal(0,"Not enough memory to initialize client structure\n"); 705 DosDisConnectNPipe(pipe); 706 DosClose(pipe); 707 return; 708 } 703 709 704 debuglocal(0,"opening client pipe %d\n", pipe); 710 705 for (;;) … … 718 713 // rc = 0 - continue, rc = 1 - quit with response 719 714 memset(&resp, 0, sizeof(resp)); 720 rc = processrequest(pipe, cli, &reconnect, &srv, &req, &resp);715 rc = processrequest(pipe, &cli, &reconnect, &srv, &req, &resp); 721 716 if (rc < 2) 722 717 { … … 735 730 // no delay shown while using FOC. 736 731 DosSleep(0); 737 if (req.request == SMBREQ_DISCONNECT)738 {739 /* The cli structure was deallocated. Reallocate it. */740 cli = (cli_state *)calloc(smbwrp_getclisize(), 1);741 if (!cli)742 {743 debuglocal(0,"Not enough memory to initialize client structure\n");744 break;745 }746 }747 732 } 748 733 debuglocal(0,"closing client pipe %d\n", pipe); -
trunk/samba/source/ndpsmb/smbwrp.c
r64 r69 373 373 return a connection to a server 374 374 *******************************************************/ 375 int _System smbwrp_connect(smbwrp_server * srv, struct cli_state * cli)375 int _System smbwrp_connect(smbwrp_server * srv, struct cli_state ** cli) 376 376 { 377 377 char * server = srv->server_name; … … 476 476 477 477 // copy back cli_state 478 memcpy( cli, c, sizeof( struct cli_state));478 *cli = c; 479 479 480 480 // srv->dev = (dev_t)(str_checksum(server) ^ str_checksum(share)); … … 486 486 close a connection to a server 487 487 *******************************************************/ 488 void _System smbwrp_disconnect( cli_state* cli)488 void _System smbwrp_disconnect(struct cli_state ** cli) 489 489 { 490 490 if (cli) 491 491 { 492 cli_shutdown(cli); 492 // this call will free all buffers, close handles and free cli mem 493 cli_shutdown(*cli); 494 // set to zero because no longer valid 495 *cli = 0; 493 496 } 494 497 } -
trunk/samba/source/ndpsmb/smbwrp.h
r6 r69 121 121 int _System smbwrp_getclisize(void); 122 122 int _System smbwrp_init(void); 123 int _System smbwrp_connect(smbwrp_server * srv, cli_state * c);124 void _System smbwrp_disconnect(cli_state * cli);123 int _System smbwrp_connect(smbwrp_server * srv, cli_state ** c); 124 void _System smbwrp_disconnect(cli_state ** cli); 125 125 int _System smbwrp_open(cli_state * cli, smbwrp_file * file); 126 126 int _System smbwrp_read(cli_state * cli, smbwrp_file * file, void *buf, unsigned long count, unsigned long * result);
Note:
See TracChangeset
for help on using the changeset viewer.