Move error reporting of messaging context creation fail into
[ira/wip.git] / source3 / smbd / globals.c
index 2f6e33b146357d39a452db2f0946fea56b7c3372..aac30ea9c1cf338c8cd115a7f1660daec2a1e79d 100644 (file)
@@ -102,9 +102,26 @@ int num_children = 0;
 
 struct smbd_server_connection *smbd_server_conn = NULL;
 
+struct smbd_server_connection *msg_ctx_to_sconn(struct messaging_context *msg_ctx)
+{
+       struct server_id my_id, msg_id;
+
+       my_id = messaging_server_id(smbd_server_conn->msg_ctx);
+       msg_id = messaging_server_id(msg_ctx);
+
+       if (!procid_equal(&my_id, &msg_id)) {
+               return NULL;
+       }
+       return smbd_server_conn;
+}
+
 struct messaging_context *smbd_messaging_context(void)
 {
-       return server_messaging_context();
+       struct messaging_context *msg_ctx = server_messaging_context();
+       if (likely(msg_ctx != NULL)) {
+               return msg_ctx;
+       }
+       smb_panic("Could not init smbd's messaging context.\n");
 }
 
 struct memcache *smbd_memcache(void)