| 340 | } |
| 341 | |
| 342 | void master_threads::service_on_close(void* ctx, ACL_VSTREAM* client) |
| 343 | { |
| 344 | master_threads* mt = (master_threads *) ctx; |
| 345 | acl_assert(mt != NULL); |
| 346 | |
| 347 | socket_stream* stream = (socket_stream*) client->context; |
| 348 | if (stream == NULL) { |
| 349 | logger_fatal("client->context is null!"); |
| 350 | } |
| 351 | |
| 352 | // �������ຯ���Խ�Ҫ�رյ��������ƺ��� |
| 353 | mt->thread_on_close(stream); |
| 354 | |
| 355 | // �������������İ�ϵ���������Է�ֹ��ɾ��������ʱ |
| 356 | // �����ر�������������Ϊ����������Ҫ�ڱ��������غ��� |
| 357 | // ����Զ��ر� |
| 358 | (void) stream->unbind(); |
| 359 | delete stream; |
| 360 | } |
| 361 | |
| 362 | int master_threads::service_on_sighup(void* ctx, ACL_VSTRING* buf) |
| 363 | { |
nothing calls this directly
no test coverage detected